@lssm/lib.contracts 1.7.1 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/app-config/contracts.d.ts +49 -51
  2. package/dist/app-config/contracts.d.ts.map +1 -1
  3. package/dist/app-config/contracts.js +1 -1
  4. package/dist/app-config/contracts.js.map +1 -1
  5. package/dist/app-config/events.d.ts +26 -28
  6. package/dist/app-config/events.d.ts.map +1 -1
  7. package/dist/app-config/events.js +1 -1
  8. package/dist/app-config/events.js.map +1 -1
  9. package/dist/app-config/lifecycle-contracts.d.ts +79 -81
  10. package/dist/app-config/lifecycle-contracts.d.ts.map +1 -1
  11. package/dist/app-config/lifecycle-contracts.js +1 -1
  12. package/dist/app-config/lifecycle-contracts.js.map +1 -1
  13. package/dist/capabilities/openbanking.js.map +1 -1
  14. package/dist/client/react/form-render.d.ts +0 -1
  15. package/dist/client/react/form-render.d.ts.map +1 -1
  16. package/dist/contracts-adapter-input.d.ts +0 -1
  17. package/dist/contracts-adapter-input.d.ts.map +1 -1
  18. package/dist/events.d.ts +0 -1
  19. package/dist/events.d.ts.map +1 -1
  20. package/dist/events.js +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/forms.d.ts +0 -1
  23. package/dist/forms.d.ts.map +1 -1
  24. package/dist/install.d.ts +0 -1
  25. package/dist/install.d.ts.map +1 -1
  26. package/dist/integrations/contracts.d.ts +101 -103
  27. package/dist/integrations/contracts.d.ts.map +1 -1
  28. package/dist/integrations/contracts.js +1 -1
  29. package/dist/integrations/contracts.js.map +1 -1
  30. package/dist/integrations/openbanking/contracts/accounts.d.ts +65 -67
  31. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -1
  32. package/dist/integrations/openbanking/contracts/accounts.js +1 -1
  33. package/dist/integrations/openbanking/contracts/accounts.js.map +1 -1
  34. package/dist/integrations/openbanking/contracts/balances.d.ts +33 -35
  35. package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -1
  36. package/dist/integrations/openbanking/contracts/balances.js +1 -1
  37. package/dist/integrations/openbanking/contracts/balances.js.map +1 -1
  38. package/dist/integrations/openbanking/contracts/index.js.map +1 -1
  39. package/dist/integrations/openbanking/contracts/transactions.d.ts +47 -49
  40. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -1
  41. package/dist/integrations/openbanking/contracts/transactions.js +1 -1
  42. package/dist/integrations/openbanking/contracts/transactions.js.map +1 -1
  43. package/dist/integrations/openbanking/guards.js.map +1 -1
  44. package/dist/integrations/openbanking/models.d.ts +54 -57
  45. package/dist/integrations/openbanking/models.d.ts.map +1 -1
  46. package/dist/integrations/openbanking/models.js +1 -1
  47. package/dist/integrations/openbanking/models.js.map +1 -1
  48. package/dist/integrations/openbanking/telemetry.js.map +1 -1
  49. package/dist/integrations/providers/powens.js.map +1 -1
  50. package/dist/jsonschema.d.ts +1 -1
  51. package/dist/jsonschema.d.ts.map +1 -1
  52. package/dist/knowledge/contracts.d.ts +65 -67
  53. package/dist/knowledge/contracts.d.ts.map +1 -1
  54. package/dist/knowledge/contracts.js +1 -1
  55. package/dist/knowledge/contracts.js.map +1 -1
  56. package/dist/knowledge/spaces/product-canon.js.map +1 -1
  57. package/dist/knowledge/spaces/support-faq.js.map +1 -1
  58. package/dist/knowledge/spec.js.map +1 -1
  59. package/dist/onboarding-base.d.ts +28 -30
  60. package/dist/onboarding-base.d.ts.map +1 -1
  61. package/dist/onboarding-base.js +1 -1
  62. package/dist/onboarding-base.js.map +1 -1
  63. package/dist/presentations.d.ts +0 -1
  64. package/dist/presentations.d.ts.map +1 -1
  65. package/dist/presentations.v2.d.ts +0 -1
  66. package/dist/presentations.v2.d.ts.map +1 -1
  67. package/dist/regenerator/executor.js.map +1 -1
  68. package/dist/regenerator/service.js.map +1 -1
  69. package/dist/regenerator/sinks.js.map +1 -1
  70. package/dist/regenerator/utils.js.map +1 -1
  71. package/dist/registry.d.ts +0 -1
  72. package/dist/registry.d.ts.map +1 -1
  73. package/dist/resources.d.ts.map +1 -1
  74. package/dist/schema/{dist → src}/FieldType.js +1 -1
  75. package/dist/schema/src/FieldType.js.map +1 -0
  76. package/dist/schema/src/ScalarTypeEnum.js +2 -0
  77. package/dist/schema/src/ScalarTypeEnum.js.map +1 -0
  78. package/dist/schema/{dist → src}/SchemaModel.js +1 -1
  79. package/dist/schema/src/SchemaModel.js.map +1 -0
  80. package/dist/schema/src/index.js +1 -0
  81. package/dist/spec.d.ts +0 -1
  82. package/dist/spec.d.ts.map +1 -1
  83. package/dist/workflow/spec.d.ts.map +1 -1
  84. package/package.json +339 -168
  85. package/dist/schema/dist/FieldType.js.map +0 -1
  86. package/dist/schema/dist/ScalarTypeEnum.js +0 -2
  87. package/dist/schema/dist/ScalarTypeEnum.js.map +0 -1
  88. package/dist/schema/dist/SchemaModel.js.map +0 -1
  89. package/dist/schema/dist/index.js +0 -1
  90. /package/dist/schema/{dist → src}/EnumType.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":[],"mappings":";;;;;;cAgJa,6BAA2B,aAAA;;UAoBtC,mBAAA,CAAA;IApBW,UAAA,EAAA,KAAA;EAoBX,CAAA;;;;;;;;;;;;EApBsC,CAAA;EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAAA,mBAAA,CAAA;;;;IAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAsB3B,CAAA;EAoBX,cAAA,EAAA;;;;;;;;;;IApBsC,UAAA,EAAA,KAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA,IAAA,+BAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EAsB3B,CAAA;EAoBX,eAAA,EAAA;IApBsC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;;EAAA,eAAA,EAAA;IAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAsB3B,UAAA,EAAA,IAAA;EAoBX,CAAA;;;IApBqC,UAAA,EAAA,IAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA,UAAA,EAAA,IAAA;EAAA,CAAA;AAsBvC,CAAA,CAAA,EAAa,SAAA,CAAA;AAoBX,cAtFW,2BAsFX,EAtFsC,YAsFtC,CAtFsC,WAsFtC,CAAA;EApBoC,YAAA,EAAA;IAAA,IAAA,EA9CpC,mBAAA,CAAA,SA8CoC,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;EAAA,CAAA;EAAA,MAAA,EAAA;IAsBzB,IAAA,+BAEX,CAAA,MAFiC,EAAA,MAAM,CAAA;IAWzB,UAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;UAnGwB,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB3B,6BAA2B,aAAA;;UAoBtC,mBAAA,CAAA;;;;;UApBsC,mBAAA,CAAA;;;;cAsB3B,4BAA0B,aAAA;;UAoBrC,mBAAA,CAAA;;;;;;;;;;;;;;;cApBqC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB1B,2BAAyB,aAAA;;UAoBpC,mBAAA,CAAA;;;;;UApBoC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;cAsBzB,sBAAsB,eAEjC;iBASc,4BAAA,WAAuC,eAAY"}
1
+ {"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":[],"mappings":";;;;cAgJa,6BAA2B,aAAA;EAA3B,QAAA,EAAA;IAoBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;IApBsC,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAAA,KAAA;;EAAA,CAAA;EAAA,QAAA,EAAA;IAsB3B,IAAA,QAoBX,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;EApBsC,KAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,CAAA;EAAA,eAAA,EAAA;IAsB3B,IAAA,QAoBX,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EApBsC,CAAA;EAAA,eAAA,EAAA;;IAAA,UAAA,EAAA,IAAA;EAAA,CAAA;EAsB3B,eAAA,EAAA;IAoBX,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;EApBqC,kBAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,SAAA,EAAA;IAAA,IAAA,QAAA,KAAA,EAAA,MAAA,CAAA;IAsB1B,UAAA,EAAA,IAAA;EAoBX,CAAA;CApBoC,CAAA,EAAA,SAAA,CAAA;AAAA,cAlEzB,2BAkEyB,EAlEE,YAkEF,CAlEE,WAkEF,CAAA;;UA9CpC,KAAA;;;;IA8CoC,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EAsBzB,CAAA;EAWG,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAnGwB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB3B,6BAA2B,aAAA;;UAoBtC,KAAA;;;;;UApBsC,KAAA;;;;cAsB3B,4BAA0B,aAAA;;UAoBrC,KAAA;;;;;;;;;;;;;;;cApBqC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB1B,2BAAyB,aAAA;;UAoBpC,KAAA;;;;;UApBoC,KAAA;;;;;;;;;;;;;;;;;;;;cAsBzB,sBAAsB,eAEjC;iBASc,4BAAA,WAAuC,eAAY"}
@@ -1,2 +1,2 @@
1
- import{l as e}from"../schema/dist/ScalarTypeEnum.js";import{t}from"../schema/dist/SchemaModel.js";import"../schema/dist/index.js";import{defineCommand as n,defineQuery as r}from"../spec.js";const i=new t({name:`IntegrationConnectionRecord`,fields:{id:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},healthStatus:{type:e.String_unsecure(),isOptional:!0},healthCheckedAt:{type:e.DateTime(),isOptional:!0},healthLatencyMs:{type:e.Float_unsecure(),isOptional:!0},healthErrorCode:{type:e.String_unsecure(),isOptional:!0},healthErrorMessage:{type:e.String_unsecure(),isOptional:!0},usageRequestCount:{type:e.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:e.Int_unsecure(),isOptional:!0},usageErrorCount:{type:e.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:e.DateTime(),isOptional:!0},usageLastErrorAt:{type:e.DateTime(),isOptional:!0},usageLastErrorCode:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!0}}}),a=new t({name:`CreateIntegrationConnectionInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!1}}}),o=new t({name:`UpdateIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0},ownershipMode:{type:e.String_unsecure(),isOptional:!0},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!0},secretRef:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!0}}}),s=new t({name:`DeleteIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),c=new t({name:`ListIntegrationConnectionsInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},category:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0}}}),l=new t({name:`ListIntegrationConnectionsOutput`,fields:{connections:{type:i,isOptional:!1,isArray:!0}}}),u=new t({name:`TestIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),d=new t({name:`TestIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!0},latencyMs:{type:e.Float_unsecure(),isOptional:!0},error:{type:e.String_unsecure(),isOptional:!0},errorCode:{type:e.String_unsecure(),isOptional:!0}}}),f=new t({name:`DeleteIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),p=n({meta:{name:`integrations.connection.create`,version:1,description:`Create a new integration connection for a tenant.`,goal:`Provision a tenant-scoped connection to an external provider.`,context:`Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:a,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),m=n({meta:{name:`integrations.connection.update`,version:1,description:`Update metadata or credentials for an integration connection.`,goal:`Allow secure rotation of credentials and metadata adjustments.`,context:`Supports rotating API keys, toggling status, or updating labels for tenant integrations.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:o,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),h=n({meta:{name:`integrations.connection.delete`,version:1,description:`Delete an integration connection for a tenant.`,goal:`Safely remove credentials and disable connector usage.`,context:`Ensures connections are de-provisioned when no longer needed or breached.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:s,output:f},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),g=r({meta:{name:`integrations.connection.list`,version:1,description:`List integration connections for a tenant.`,goal:`Provide visibility into configured integrations and their status.`,context:`Used by the App Studio and Ops flows to show bindings and health.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.integration.read`,version:1}]}}),_=n({meta:{name:`integrations.connection.test`,version:1,description:`Run a health check against a configured integration connection.`,goal:`Validate credentials and connectivity for external providers.`,context:`Triggered manually or by background monitors to confirm provider availability.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),v={CreateIntegrationConnection:p,UpdateIntegrationConnection:m,DeleteIntegrationConnection:h,ListIntegrationConnections:g,TestIntegrationConnection:_};function y(e){return e.register(p).register(m).register(h).register(g).register(_)}export{p as CreateIntegrationConnection,h as DeleteIntegrationConnection,g as ListIntegrationConnections,_ as TestIntegrationConnection,m as UpdateIntegrationConnection,v as integrationContracts,y as registerIntegrationContracts};
1
+ import{ScalarTypeEnum as e}from"../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../schema/src/SchemaModel.js";import"../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../spec.js";const i=new t({name:`IntegrationConnectionRecord`,fields:{id:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},healthStatus:{type:e.String_unsecure(),isOptional:!0},healthCheckedAt:{type:e.DateTime(),isOptional:!0},healthLatencyMs:{type:e.Float_unsecure(),isOptional:!0},healthErrorCode:{type:e.String_unsecure(),isOptional:!0},healthErrorMessage:{type:e.String_unsecure(),isOptional:!0},usageRequestCount:{type:e.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:e.Int_unsecure(),isOptional:!0},usageErrorCount:{type:e.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:e.DateTime(),isOptional:!0},usageLastErrorAt:{type:e.DateTime(),isOptional:!0},usageLastErrorCode:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!0}}}),a=new t({name:`CreateIntegrationConnectionInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!1}}}),o=new t({name:`UpdateIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0},ownershipMode:{type:e.String_unsecure(),isOptional:!0},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!0},secretRef:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!0}}}),s=new t({name:`DeleteIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),c=new t({name:`ListIntegrationConnectionsInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},category:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0}}}),l=new t({name:`ListIntegrationConnectionsOutput`,fields:{connections:{type:i,isOptional:!1,isArray:!0}}}),u=new t({name:`TestIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),d=new t({name:`TestIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!0},latencyMs:{type:e.Float_unsecure(),isOptional:!0},error:{type:e.String_unsecure(),isOptional:!0},errorCode:{type:e.String_unsecure(),isOptional:!0}}}),f=new t({name:`DeleteIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),p=n({meta:{name:`integrations.connection.create`,version:1,description:`Create a new integration connection for a tenant.`,goal:`Provision a tenant-scoped connection to an external provider.`,context:`Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:a,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),m=n({meta:{name:`integrations.connection.update`,version:1,description:`Update metadata or credentials for an integration connection.`,goal:`Allow secure rotation of credentials and metadata adjustments.`,context:`Supports rotating API keys, toggling status, or updating labels for tenant integrations.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:o,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),h=n({meta:{name:`integrations.connection.delete`,version:1,description:`Delete an integration connection for a tenant.`,goal:`Safely remove credentials and disable connector usage.`,context:`Ensures connections are de-provisioned when no longer needed or breached.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:s,output:f},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),g=r({meta:{name:`integrations.connection.list`,version:1,description:`List integration connections for a tenant.`,goal:`Provide visibility into configured integrations and their status.`,context:`Used by the App Studio and Ops flows to show bindings and health.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.integration.read`,version:1}]}}),_=n({meta:{name:`integrations.connection.test`,version:1,description:`Run a health check against a configured integration connection.`,goal:`Validate credentials and connectivity for external providers.`,context:`Triggered manually or by background monitors to confirm provider availability.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),v={CreateIntegrationConnection:p,UpdateIntegrationConnection:m,DeleteIntegrationConnection:h,ListIntegrationConnections:g,TestIntegrationConnection:_};function y(e){return e.register(p).register(m).register(h).register(g).register(_)}export{p as CreateIntegrationConnection,h as DeleteIntegrationConnection,g as ListIntegrationConnections,_ as TestIntegrationConnection,m as UpdateIntegrationConnection,v as integrationContracts,y as registerIntegrationContracts};
2
2
  //# sourceMappingURL=contracts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","names":["SchemaModel","ScalarTypeEnum","integrationContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../spec';\nimport type { SpecRegistry } from '../registry';\n\nconst IntegrationConnectionRecord = new SchemaModel({\n name: 'IntegrationConnectionRecord',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthCheckedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n healthLatencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n healthErrorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthErrorMessage: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n usageRequestCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageSuccessCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageErrorCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageLastUsedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst CreateIntegrationConnectionInput = new SchemaModel({\n name: 'CreateIntegrationConnectionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n});\n\nconst UpdateIntegrationConnectionInput = new SchemaModel({\n name: 'UpdateIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionInput = new SchemaModel({\n name: 'DeleteIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst ListIntegrationConnectionsInput = new SchemaModel({\n name: 'ListIntegrationConnectionsInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n category: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst ListIntegrationConnectionsOutput = new SchemaModel({\n name: 'ListIntegrationConnectionsOutput',\n fields: {\n connections: {\n type: IntegrationConnectionRecord,\n isOptional: false,\n isArray: true,\n },\n },\n});\n\nconst TestIntegrationConnectionInput = new SchemaModel({\n name: 'TestIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst TestIntegrationConnectionOutput = new SchemaModel({\n name: 'TestIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n latencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n error: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n errorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionOutput = new SchemaModel({\n name: 'DeleteIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n },\n});\n\nexport const CreateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.create',\n version: 1,\n description: 'Create a new integration connection for a tenant.',\n goal: 'Provision a tenant-scoped connection to an external provider.',\n context:\n 'Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: CreateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const UpdateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.update',\n version: 1,\n description: 'Update metadata or credentials for an integration connection.',\n goal: 'Allow secure rotation of credentials and metadata adjustments.',\n context:\n 'Supports rotating API keys, toggling status, or updating labels for tenant integrations.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: UpdateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const DeleteIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.delete',\n version: 1,\n description: 'Delete an integration connection for a tenant.',\n goal: 'Safely remove credentials and disable connector usage.',\n context:\n 'Ensures connections are de-provisioned when no longer needed or breached.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: DeleteIntegrationConnectionInput,\n output: DeleteIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const ListIntegrationConnections = defineQuery({\n meta: {\n name: 'integrations.connection.list',\n version: 1,\n description: 'List integration connections for a tenant.',\n goal: 'Provide visibility into configured integrations and their status.',\n context:\n 'Used by the App Studio and Ops flows to show bindings and health.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: ListIntegrationConnectionsInput,\n output: ListIntegrationConnectionsOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.read', version: 1 }],\n },\n});\n\nexport const TestIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.test',\n version: 1,\n description: 'Run a health check against a configured integration connection.',\n goal: 'Validate credentials and connectivity for external providers.',\n context:\n 'Triggered manually or by background monitors to confirm provider availability.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: TestIntegrationConnectionInput,\n output: TestIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const integrationContracts: Record<\n string,\n ContractSpec<any, any>\n> = {\n CreateIntegrationConnection,\n UpdateIntegrationConnection,\n DeleteIntegrationConnection,\n ListIntegrationConnections,\n TestIntegrationConnection,\n};\n\nexport function registerIntegrationContracts(registry: SpecRegistry) {\n return registry\n .register(CreateIntegrationConnection)\n .register(UpdateIntegrationConnection)\n .register(DeleteIntegrationConnection)\n .register(ListIntegrationConnections)\n .register(TestIntegrationConnection);\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","names":["integrationContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../spec';\nimport type { SpecRegistry } from '../registry';\n\nconst IntegrationConnectionRecord = new SchemaModel({\n name: 'IntegrationConnectionRecord',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthCheckedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n healthLatencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n healthErrorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthErrorMessage: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n usageRequestCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageSuccessCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageErrorCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageLastUsedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst CreateIntegrationConnectionInput = new SchemaModel({\n name: 'CreateIntegrationConnectionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n});\n\nconst UpdateIntegrationConnectionInput = new SchemaModel({\n name: 'UpdateIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionInput = new SchemaModel({\n name: 'DeleteIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst ListIntegrationConnectionsInput = new SchemaModel({\n name: 'ListIntegrationConnectionsInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n category: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst ListIntegrationConnectionsOutput = new SchemaModel({\n name: 'ListIntegrationConnectionsOutput',\n fields: {\n connections: {\n type: IntegrationConnectionRecord,\n isOptional: false,\n isArray: true,\n },\n },\n});\n\nconst TestIntegrationConnectionInput = new SchemaModel({\n name: 'TestIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst TestIntegrationConnectionOutput = new SchemaModel({\n name: 'TestIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n latencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n error: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n errorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionOutput = new SchemaModel({\n name: 'DeleteIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n },\n});\n\nexport const CreateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.create',\n version: 1,\n description: 'Create a new integration connection for a tenant.',\n goal: 'Provision a tenant-scoped connection to an external provider.',\n context:\n 'Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: CreateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const UpdateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.update',\n version: 1,\n description: 'Update metadata or credentials for an integration connection.',\n goal: 'Allow secure rotation of credentials and metadata adjustments.',\n context:\n 'Supports rotating API keys, toggling status, or updating labels for tenant integrations.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: UpdateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const DeleteIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.delete',\n version: 1,\n description: 'Delete an integration connection for a tenant.',\n goal: 'Safely remove credentials and disable connector usage.',\n context:\n 'Ensures connections are de-provisioned when no longer needed or breached.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: DeleteIntegrationConnectionInput,\n output: DeleteIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const ListIntegrationConnections = defineQuery({\n meta: {\n name: 'integrations.connection.list',\n version: 1,\n description: 'List integration connections for a tenant.',\n goal: 'Provide visibility into configured integrations and their status.',\n context:\n 'Used by the App Studio and Ops flows to show bindings and health.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: ListIntegrationConnectionsInput,\n output: ListIntegrationConnectionsOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.read', version: 1 }],\n },\n});\n\nexport const TestIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.test',\n version: 1,\n description: 'Run a health check against a configured integration connection.',\n goal: 'Validate credentials and connectivity for external providers.',\n context:\n 'Triggered manually or by background monitors to confirm provider availability.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: TestIntegrationConnectionInput,\n output: TestIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const integrationContracts: Record<\n string,\n ContractSpec<any, any>\n> = {\n CreateIntegrationConnection,\n UpdateIntegrationConnection,\n DeleteIntegrationConnection,\n ListIntegrationConnections,\n TestIntegrationConnection,\n};\n\nexport function registerIntegrationContracts(registry: SpecRegistry) {\n return registry\n .register(CreateIntegrationConnection)\n .register(UpdateIntegrationConnection)\n .register(DeleteIntegrationConnection)\n .register(ListIntegrationConnections)\n .register(TestIntegrationConnection);\n}\n\n"],"mappings":"uNAWA,MAAM,EAA8B,IAAI,EAAY,CAClD,KAAM,8BACN,OAAQ,CACN,GAAI,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CACpD,SAAU,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,eAAgB,CAAE,KAAM,EAAe,gBAAgB,CAAE,WAAY,GAAO,CAC5E,mBAAoB,CAAE,KAAM,EAAe,cAAc,CAAE,WAAY,GAAO,CAC9E,MAAO,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CACpE,cAAe,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CAC5E,kBAAmB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC/E,eAAgB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CAC7E,UAAW,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CACxE,OAAQ,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CACrE,YAAa,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACzE,aAAc,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC1E,gBAAiB,CAAE,KAAM,EAAe,UAAU,CAAE,WAAY,GAAM,CACtE,gBAAiB,CAAE,KAAM,EAAe,gBAAgB,CAAE,WAAY,GAAM,CAC5E,gBAAiB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC7E,mBAAoB,CAClB,KAAM,EAAe,iBAAiB,CACtC,WAAY,GACb,CACD,kBAAmB,CACjB,KAAM,EAAe,cAAc,CACnC,WAAY,GACb,CACD,kBAAmB,CACjB,KAAM,EAAe,cAAc,CACnC,WAAY,GACb,CACD,gBAAiB,CACf,KAAM,EAAe,cAAc,CACnC,WAAY,GACb,CACD,gBAAiB,CACf,KAAM,EAAe,UAAU,CAC/B,WAAY,GACb,CACD,iBAAkB,CAChB,KAAM,EAAe,UAAU,CAC/B,WAAY,GACb,CACD,mBAAoB,CAClB,KAAM,EAAe,iBAAiB,CACtC,WAAY,GACb,CACD,UAAW,CAAE,KAAM,EAAe,UAAU,CAAE,WAAY,GAAM,CAChE,UAAW,CAAE,KAAM,EAAe,UAAU,CAAE,WAAY,GAAM,CACjE,CACF,CAAC,CAEI,EAAmC,IAAI,EAAY,CACvD,KAAM,mCACN,OAAQ,CACN,SAAU,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,eAAgB,CAAE,KAAM,EAAe,gBAAgB,CAAE,WAAY,GAAO,CAC5E,mBAAoB,CAAE,KAAM,EAAe,cAAc,CAAE,WAAY,GAAO,CAC9E,MAAO,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CACpE,cAAe,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CAC5E,kBAAmB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC/E,eAAgB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CAC7E,UAAW,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAO,CACxE,YAAa,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACzE,OAAQ,CAAE,KAAM,EAAe,YAAY,CAAE,WAAY,GAAO,CACjE,CACF,CAAC,CAEI,EAAmC,IAAI,EAAY,CACvD,KAAM,mCACN,OAAQ,CACN,aAAc,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC9D,MAAO,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACnE,OAAQ,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACpE,cAAe,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC3E,kBAAmB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC/E,eAAgB,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CAC5E,UAAW,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACvE,OAAQ,CAAE,KAAM,EAAe,YAAY,CAAE,WAAY,GAAM,CAChE,CACF,CAAC,CAEI,EAAmC,IAAI,EAAY,CACvD,KAAM,mCACN,OAAQ,CACN,aAAc,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC/D,CACF,CAAC,CAEI,EAAkC,IAAI,EAAY,CACtD,KAAM,kCACN,OAAQ,CACN,SAAU,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,SAAU,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACtE,OAAQ,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACrE,CACF,CAAC,CAEI,EAAmC,IAAI,EAAY,CACvD,KAAM,mCACN,OAAQ,CACN,YAAa,CACX,KAAM,EACN,WAAY,GACZ,QAAS,GACV,CACF,CACF,CAAC,CAEI,EAAiC,IAAI,EAAY,CACrD,KAAM,iCACN,OAAQ,CACN,aAAc,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC/D,CACF,CAAC,CAEI,EAAkC,IAAI,EAAY,CACtD,KAAM,kCACN,OAAQ,CACN,QAAS,CAAE,KAAM,EAAe,SAAS,CAAE,WAAY,GAAO,CAC9D,OAAQ,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACpE,UAAW,CAAE,KAAM,EAAe,gBAAgB,CAAE,WAAY,GAAM,CACtE,MAAO,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACnE,UAAW,CAAE,KAAM,EAAe,iBAAiB,CAAE,WAAY,GAAM,CACxE,CACF,CAAC,CAEI,EAAoC,IAAI,EAAY,CACxD,KAAM,oCACN,OAAQ,CACN,QAAS,CAAE,KAAM,EAAe,SAAS,CAAE,WAAY,GAAO,CAC/D,CACF,CAAC,CAEW,EAA8B,EAAc,CACvD,KAAM,CACJ,KAAM,iCACN,QAAS,EACT,YAAa,oDACb,KAAM,gEACN,QACE,6FACF,OAAQ,CAAC,wBAAwB,CACjC,KAAM,CAAC,cAAe,cAAc,CACpC,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,KAAM,8BAA+B,QAAS,EAAG,CAAC,CAChE,CACF,CAAC,CAEW,EAA8B,EAAc,CACvD,KAAM,CACJ,KAAM,iCACN,QAAS,EACT,YAAa,gEACb,KAAM,iEACN,QACE,2FACF,OAAQ,CAAC,wBAAwB,CACjC,KAAM,CAAC,cAAe,cAAc,CACpC,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,KAAM,8BAA+B,QAAS,EAAG,CAAC,CAChE,CACF,CAAC,CAEW,EAA8B,EAAc,CACvD,KAAM,CACJ,KAAM,iCACN,QAAS,EACT,YAAa,iDACb,KAAM,yDACN,QACE,4EACF,OAAQ,CAAC,wBAAwB,CACjC,KAAM,CAAC,cAAe,cAAc,CACpC,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,KAAM,8BAA+B,QAAS,EAAG,CAAC,CAChE,CACF,CAAC,CAEW,EAA6B,EAAY,CACpD,KAAM,CACJ,KAAM,+BACN,QAAS,EACT,YAAa,6CACb,KAAM,oEACN,QACE,oEACF,OAAQ,CAAC,wBAAwB,CACjC,KAAM,CAAC,cAAe,cAAc,CACpC,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,KAAM,4BAA6B,QAAS,EAAG,CAAC,CAC9D,CACF,CAAC,CAEW,EAA4B,EAAc,CACrD,KAAM,CACJ,KAAM,+BACN,QAAS,EACT,YAAa,kEACb,KAAM,gEACN,QACE,iFACF,OAAQ,CAAC,wBAAwB,CACjC,KAAM,CAAC,cAAe,cAAc,CACpC,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,KAAM,8BAA+B,QAAS,EAAG,CAAC,CAChE,CACF,CAAC,CAEWA,EAGT,CACF,8BACA,8BACA,8BACA,6BACA,4BACD,CAED,SAAgB,EAA6B,EAAwB,CACnE,OAAO,EACJ,SAAS,EAA4B,CACrC,SAAS,EAA4B,CACrC,SAAS,EAA4B,CACrC,SAAS,EAA2B,CACpC,SAAS,EAA0B"}
@@ -1,123 +1,121 @@
1
1
  import { ContractSpec } from "../../../spec.js";
2
2
  import { SpecRegistry } from "../../../registry.js";
3
- import * as _lssm_lib_schema300 from "@lssm/lib.schema";
4
- import { SchemaModel } from "@lssm/lib.schema";
5
3
 
6
4
  //#region src/integrations/openbanking/contracts/accounts.d.ts
7
5
  declare const OpenBankingListAccounts: ContractSpec<SchemaModel<{
8
6
  tenantId: {
9
- type: _lssm_lib_schema300.FieldType<string, string>;
7
+ type: void 0<string, string>;
10
8
  isOptional: false;
11
9
  };
12
10
  userId: {
13
- type: _lssm_lib_schema300.FieldType<string, string>;
11
+ type: void 0<string, string>;
14
12
  isOptional: false;
15
13
  };
16
14
  connectionId: {
17
- type: _lssm_lib_schema300.FieldType<string, string>;
15
+ type: void 0<string, string>;
18
16
  isOptional: true;
19
17
  };
20
18
  includeBalances: {
21
- type: _lssm_lib_schema300.FieldType<boolean, boolean>;
19
+ type: void 0<boolean, boolean>;
22
20
  isOptional: true;
23
21
  };
24
22
  institutionId: {
25
- type: _lssm_lib_schema300.FieldType<string, string>;
23
+ type: void 0<string, string>;
26
24
  isOptional: true;
27
25
  };
28
26
  cursor: {
29
- type: _lssm_lib_schema300.FieldType<string, string>;
27
+ type: void 0<string, string>;
30
28
  isOptional: true;
31
29
  };
32
30
  pageSize: {
33
- type: _lssm_lib_schema300.FieldType<number, number>;
31
+ type: void 0<number, number>;
34
32
  isOptional: true;
35
33
  };
36
34
  }>, SchemaModel<{
37
35
  accounts: {
38
36
  type: SchemaModel<{
39
37
  id: {
40
- type: _lssm_lib_schema300.FieldType<string, string>;
38
+ type: void 0<string, string>;
41
39
  isOptional: false;
42
40
  };
43
41
  tenantId: {
44
- type: _lssm_lib_schema300.FieldType<string, string>;
42
+ type: void 0<string, string>;
45
43
  isOptional: false;
46
44
  };
47
45
  userId: {
48
- type: _lssm_lib_schema300.FieldType<string, string>;
46
+ type: void 0<string, string>;
49
47
  isOptional: false;
50
48
  };
51
49
  connectionId: {
52
- type: _lssm_lib_schema300.FieldType<string, string>;
50
+ type: void 0<string, string>;
53
51
  isOptional: false;
54
52
  };
55
53
  externalId: {
56
- type: _lssm_lib_schema300.FieldType<string, string>;
54
+ type: void 0<string, string>;
57
55
  isOptional: false;
58
56
  };
59
57
  institutionId: {
60
- type: _lssm_lib_schema300.FieldType<string, string>;
58
+ type: void 0<string, string>;
61
59
  isOptional: false;
62
60
  };
63
61
  institutionName: {
64
- type: _lssm_lib_schema300.FieldType<string, string>;
62
+ type: void 0<string, string>;
65
63
  isOptional: false;
66
64
  };
67
65
  institutionLogoUrl: {
68
- type: _lssm_lib_schema300.FieldType<string, string>;
66
+ type: void 0<string, string>;
69
67
  isOptional: true;
70
68
  };
71
69
  iban: {
72
- type: _lssm_lib_schema300.FieldType<string, string>;
70
+ type: void 0<string, string>;
73
71
  isOptional: true;
74
72
  };
75
73
  bic: {
76
- type: _lssm_lib_schema300.FieldType<string, string>;
74
+ type: void 0<string, string>;
77
75
  isOptional: true;
78
76
  };
79
77
  accountType: {
80
- type: _lssm_lib_schema300.FieldType<string, string>;
78
+ type: void 0<string, string>;
81
79
  isOptional: false;
82
80
  };
83
81
  currency: {
84
- type: _lssm_lib_schema300.FieldType<string, string>;
82
+ type: void 0<string, string>;
85
83
  isOptional: false;
86
84
  };
87
85
  displayName: {
88
- type: _lssm_lib_schema300.FieldType<string, string>;
86
+ type: void 0<string, string>;
89
87
  isOptional: false;
90
88
  };
91
89
  accountNumberMasked: {
92
- type: _lssm_lib_schema300.FieldType<string, string>;
90
+ type: void 0<string, string>;
93
91
  isOptional: true;
94
92
  };
95
93
  productCode: {
96
- type: _lssm_lib_schema300.FieldType<string, string>;
94
+ type: void 0<string, string>;
97
95
  isOptional: true;
98
96
  };
99
97
  balance: {
100
- type: _lssm_lib_schema300.FieldType<number, number>;
98
+ type: void 0<number, number>;
101
99
  isOptional: true;
102
100
  };
103
101
  availableBalance: {
104
- type: _lssm_lib_schema300.FieldType<number, number>;
102
+ type: void 0<number, number>;
105
103
  isOptional: true;
106
104
  };
107
105
  lastSyncedAt: {
108
- type: _lssm_lib_schema300.FieldType<Date, string>;
106
+ type: void 0<Date, string>;
109
107
  isOptional: false;
110
108
  };
111
109
  createdAt: {
112
- type: _lssm_lib_schema300.FieldType<Date, string>;
110
+ type: void 0<Date, string>;
113
111
  isOptional: false;
114
112
  };
115
113
  updatedAt: {
116
- type: _lssm_lib_schema300.FieldType<Date, string>;
114
+ type: void 0<Date, string>;
117
115
  isOptional: false;
118
116
  };
119
117
  metadata: {
120
- type: _lssm_lib_schema300.FieldType<Record<string, unknown>, Record<string, unknown>>;
118
+ type: void 0<Record<string, unknown>, Record<string, unknown>>;
121
119
  isOptional: true;
122
120
  };
123
121
  }>;
@@ -125,159 +123,159 @@ declare const OpenBankingListAccounts: ContractSpec<SchemaModel<{
125
123
  isArray: true;
126
124
  };
127
125
  nextCursor: {
128
- type: _lssm_lib_schema300.FieldType<string, string>;
126
+ type: void 0<string, string>;
129
127
  isOptional: true;
130
128
  };
131
129
  hasMore: {
132
- type: _lssm_lib_schema300.FieldType<boolean, boolean>;
130
+ type: void 0<boolean, boolean>;
133
131
  isOptional: true;
134
132
  };
135
133
  }>, undefined>;
136
134
  declare const OpenBankingGetAccount: ContractSpec<SchemaModel<{
137
135
  tenantId: {
138
- type: _lssm_lib_schema300.FieldType<string, string>;
136
+ type: void 0<string, string>;
139
137
  isOptional: false;
140
138
  };
141
139
  accountId: {
142
- type: _lssm_lib_schema300.FieldType<string, string>;
140
+ type: void 0<string, string>;
143
141
  isOptional: false;
144
142
  };
145
143
  includeBalances: {
146
- type: _lssm_lib_schema300.FieldType<boolean, boolean>;
144
+ type: void 0<boolean, boolean>;
147
145
  isOptional: true;
148
146
  };
149
147
  includeLatestTransactions: {
150
- type: _lssm_lib_schema300.FieldType<boolean, boolean>;
148
+ type: void 0<boolean, boolean>;
151
149
  isOptional: true;
152
150
  };
153
151
  }>, SchemaModel<{
154
152
  id: {
155
- type: _lssm_lib_schema300.FieldType<string, string>;
153
+ type: void 0<string, string>;
156
154
  isOptional: false;
157
155
  };
158
156
  tenantId: {
159
- type: _lssm_lib_schema300.FieldType<string, string>;
157
+ type: void 0<string, string>;
160
158
  isOptional: false;
161
159
  };
162
160
  userId: {
163
- type: _lssm_lib_schema300.FieldType<string, string>;
161
+ type: void 0<string, string>;
164
162
  isOptional: false;
165
163
  };
166
164
  connectionId: {
167
- type: _lssm_lib_schema300.FieldType<string, string>;
165
+ type: void 0<string, string>;
168
166
  isOptional: false;
169
167
  };
170
168
  externalId: {
171
- type: _lssm_lib_schema300.FieldType<string, string>;
169
+ type: void 0<string, string>;
172
170
  isOptional: false;
173
171
  };
174
172
  institutionId: {
175
- type: _lssm_lib_schema300.FieldType<string, string>;
173
+ type: void 0<string, string>;
176
174
  isOptional: false;
177
175
  };
178
176
  institutionName: {
179
- type: _lssm_lib_schema300.FieldType<string, string>;
177
+ type: void 0<string, string>;
180
178
  isOptional: false;
181
179
  };
182
180
  institutionLogoUrl: {
183
- type: _lssm_lib_schema300.FieldType<string, string>;
181
+ type: void 0<string, string>;
184
182
  isOptional: true;
185
183
  };
186
184
  iban: {
187
- type: _lssm_lib_schema300.FieldType<string, string>;
185
+ type: void 0<string, string>;
188
186
  isOptional: true;
189
187
  };
190
188
  bic: {
191
- type: _lssm_lib_schema300.FieldType<string, string>;
189
+ type: void 0<string, string>;
192
190
  isOptional: true;
193
191
  };
194
192
  accountType: {
195
- type: _lssm_lib_schema300.FieldType<string, string>;
193
+ type: void 0<string, string>;
196
194
  isOptional: false;
197
195
  };
198
196
  currency: {
199
- type: _lssm_lib_schema300.FieldType<string, string>;
197
+ type: void 0<string, string>;
200
198
  isOptional: false;
201
199
  };
202
200
  displayName: {
203
- type: _lssm_lib_schema300.FieldType<string, string>;
201
+ type: void 0<string, string>;
204
202
  isOptional: false;
205
203
  };
206
204
  accountNumberMasked: {
207
- type: _lssm_lib_schema300.FieldType<string, string>;
205
+ type: void 0<string, string>;
208
206
  isOptional: true;
209
207
  };
210
208
  productCode: {
211
- type: _lssm_lib_schema300.FieldType<string, string>;
209
+ type: void 0<string, string>;
212
210
  isOptional: true;
213
211
  };
214
212
  balance: {
215
- type: _lssm_lib_schema300.FieldType<number, number>;
213
+ type: void 0<number, number>;
216
214
  isOptional: true;
217
215
  };
218
216
  availableBalance: {
219
- type: _lssm_lib_schema300.FieldType<number, number>;
217
+ type: void 0<number, number>;
220
218
  isOptional: true;
221
219
  };
222
220
  lastSyncedAt: {
223
- type: _lssm_lib_schema300.FieldType<Date, string>;
221
+ type: void 0<Date, string>;
224
222
  isOptional: false;
225
223
  };
226
224
  createdAt: {
227
- type: _lssm_lib_schema300.FieldType<Date, string>;
225
+ type: void 0<Date, string>;
228
226
  isOptional: false;
229
227
  };
230
228
  updatedAt: {
231
- type: _lssm_lib_schema300.FieldType<Date, string>;
229
+ type: void 0<Date, string>;
232
230
  isOptional: false;
233
231
  };
234
232
  metadata: {
235
- type: _lssm_lib_schema300.FieldType<Record<string, unknown>, Record<string, unknown>>;
233
+ type: void 0<Record<string, unknown>, Record<string, unknown>>;
236
234
  isOptional: true;
237
235
  };
238
236
  }>, undefined>;
239
237
  declare const OpenBankingSyncAccounts: ContractSpec<SchemaModel<{
240
238
  tenantId: {
241
- type: _lssm_lib_schema300.FieldType<string, string>;
239
+ type: void 0<string, string>;
242
240
  isOptional: false;
243
241
  };
244
242
  userId: {
245
- type: _lssm_lib_schema300.FieldType<string, string>;
243
+ type: void 0<string, string>;
246
244
  isOptional: true;
247
245
  };
248
246
  connectionId: {
249
- type: _lssm_lib_schema300.FieldType<string, string>;
247
+ type: void 0<string, string>;
250
248
  isOptional: false;
251
249
  };
252
250
  accountIds: {
253
- type: _lssm_lib_schema300.FieldType<string, string>;
251
+ type: void 0<string, string>;
254
252
  isArray: true;
255
253
  isOptional: true;
256
254
  };
257
255
  forceFullRefresh: {
258
- type: _lssm_lib_schema300.FieldType<boolean, boolean>;
256
+ type: void 0<boolean, boolean>;
259
257
  isOptional: true;
260
258
  };
261
259
  triggerWorkflows: {
262
- type: _lssm_lib_schema300.FieldType<boolean, boolean>;
260
+ type: void 0<boolean, boolean>;
263
261
  isOptional: true;
264
262
  };
265
263
  }>, SchemaModel<{
266
264
  synced: {
267
- type: _lssm_lib_schema300.FieldType<number, number>;
265
+ type: void 0<number, number>;
268
266
  isOptional: false;
269
267
  };
270
268
  failed: {
271
- type: _lssm_lib_schema300.FieldType<number, number>;
269
+ type: void 0<number, number>;
272
270
  isOptional: false;
273
271
  };
274
272
  errors: {
275
- type: _lssm_lib_schema300.FieldType<string, string>;
273
+ type: void 0<string, string>;
276
274
  isArray: true;
277
275
  isOptional: true;
278
276
  };
279
277
  nextSyncSuggestedAt: {
280
- type: _lssm_lib_schema300.FieldType<Date, string>;
278
+ type: void 0<Date, string>;
281
279
  isOptional: true;
282
280
  };
283
281
  }>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":[],"mappings":";;;;;;cA2Fa,yBAAuB,aAAA;;UAmBlC,mBAAA,CAAA;IAnBW,UAAA,EAAA,KAAA;EAmBX,CAAA;;;;;;;IAnBkC,UAAA,EAAA,IAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;cAAA,mBAAA,CAAA;;;;;;;;;QAAA,UAAA,EAAA,KAAA;MAAA,CAAA;MAqBvB,YAAA,EAAA;QAmBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;QAnBgC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;MAqBrB,CAAA;MAsDX,WAAA,EAAA;;;;;;QAtDkC,UAAA,EAAA,IAAA;MAAA,CAAA;;;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,IAAA;MAwDvB,CAAA;MAOG,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cApFH,uBAAqB,aAAA;;UAmBhC,mBAAA,CAAA;;;;;;;;;;;;;;;;;UAnBgC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqBrB,yBAAuB,aAAA;;UAsDlC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAtDkC,mBAAA,CAAA;;;;;;;;;;;;;;;;;cAwDvB,6BAA6B,eAAe;iBAOzC,mCAAA,WACJ,eACT"}
1
+ {"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":[],"mappings":";;;;cA2Fa,yBAAuB,aAAA;EAAvB,QAAA,EAAA;IAmBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAnBkC,YAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;cAAA,KAAA;;;;;;;MAAA,MAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAqBvB,UAAA,EAmBX,KAAA;MAAA,CAAA;;;;MAnBgC,CAAA;MAAA,UAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAA,CAAA;MAAA,QAAA,EAAA;QAqBrB,IAAA,QAsDX,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;;;;;;MAtDkC,mBAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;MAAA,CAAA;MAAA,OAAA,EAAA;QAwDvB,IAAA,QAA4C,CAAA,MAAf,EAAA,MAAM,CAAA;QAOhC,UAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cApFH,uBAAqB,aAAA;;UAmBhC,KAAA;;;;;;;;;;;;;;;;;UAnBgC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqBrB,yBAAuB,aAAA;;UAsDlC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAtDkC,KAAA;;;;;;;;;;;;;;;;;cAwDvB,6BAA6B,eAAe;iBAOzC,mCAAA,WACJ,eACT"}
@@ -1,2 +1,2 @@
1
- import{l as e}from"../../../schema/dist/ScalarTypeEnum.js";import{t}from"../../../schema/dist/SchemaModel.js";import"../../../schema/dist/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{BankAccountRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingListAccountsInput`,description:`Parameters for listing bank accounts through the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!0},includeBalances:{type:e.Boolean(),isOptional:!0},institutionId:{type:e.String_unsecure(),isOptional:!0},cursor:{type:e.String_unsecure(),isOptional:!0},pageSize:{type:e.Int_unsecure(),isOptional:!0}}}),s=new t({name:`OpenBankingListAccountsOutput`,description:`Paginated list of bank accounts available to the tenant and user.`,fields:{accounts:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:e.String_unsecure(),isOptional:!0},hasMore:{type:e.Boolean(),isOptional:!0}}}),c=new t({name:`OpenBankingGetAccountInput`,description:`Parameters for retrieving a specific bank account.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},includeBalances:{type:e.Boolean(),isOptional:!0},includeLatestTransactions:{type:e.Boolean(),isOptional:!0}}}),l=new t({name:`OpenBankingSyncAccountsInput`,description:`Command payload to trigger an account synchronisation against the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!1},accountIds:{type:e.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:e.Boolean(),isOptional:!0},triggerWorkflows:{type:e.Boolean(),isOptional:!0}}}),u=new t({name:`OpenBankingSyncAccountsOutput`,description:`Result of a bank account synchronisation run.`,fields:{synced:{type:e.Int_unsecure(),isOptional:!1},failed:{type:e.Int_unsecure(),isOptional:!1},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:e.DateTime(),isOptional:!0}}}),d=r({meta:{name:`openbanking.accounts.list`,version:1,description:`List bank accounts available to a tenant/user via Powens Open Banking.`,goal:`Provide downstream workflows with the set of accounts accessible via the configured open banking connection.`,context:`Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),f=r({meta:{name:`openbanking.accounts.get`,version:1,description:`Retrieve the canonical bank account record for the given account identifier.`,goal:`Allow user-facing experiences and automations to display up-to-date account metadata.`,context:`Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:c,output:i},policy:{auth:`user`}}),p=n({meta:{name:`openbanking.accounts.sync`,version:1,description:`Initiate a synchronisation run to refresh bank account metadata from Powens.`,goal:`Keep canonical bank account records aligned with the external open banking provider.`,context:`Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:l,output:u},policy:{auth:`admin`},telemetry:{success:{event:{name:a.accountsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,connectionId:n?.connectionId,synced:r?.synced,failed:r?.failed}}},failure:{event:{name:a.accountsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,connectionId:n?.connectionId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),m={OpenBankingListAccounts:d,OpenBankingGetAccount:f,OpenBankingSyncAccounts:p};function h(e){return e.register(d).register(f).register(p)}export{f as OpenBankingGetAccount,d as OpenBankingListAccounts,p as OpenBankingSyncAccounts,m as openBankingAccountContracts,h as registerOpenBankingAccountContracts};
1
+ import{ScalarTypeEnum as e}from"../../../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../../../schema/src/SchemaModel.js";import"../../../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{BankAccountRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingListAccountsInput`,description:`Parameters for listing bank accounts through the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!0},includeBalances:{type:e.Boolean(),isOptional:!0},institutionId:{type:e.String_unsecure(),isOptional:!0},cursor:{type:e.String_unsecure(),isOptional:!0},pageSize:{type:e.Int_unsecure(),isOptional:!0}}}),s=new t({name:`OpenBankingListAccountsOutput`,description:`Paginated list of bank accounts available to the tenant and user.`,fields:{accounts:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:e.String_unsecure(),isOptional:!0},hasMore:{type:e.Boolean(),isOptional:!0}}}),c=new t({name:`OpenBankingGetAccountInput`,description:`Parameters for retrieving a specific bank account.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},includeBalances:{type:e.Boolean(),isOptional:!0},includeLatestTransactions:{type:e.Boolean(),isOptional:!0}}}),l=new t({name:`OpenBankingSyncAccountsInput`,description:`Command payload to trigger an account synchronisation against the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!1},accountIds:{type:e.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:e.Boolean(),isOptional:!0},triggerWorkflows:{type:e.Boolean(),isOptional:!0}}}),u=new t({name:`OpenBankingSyncAccountsOutput`,description:`Result of a bank account synchronisation run.`,fields:{synced:{type:e.Int_unsecure(),isOptional:!1},failed:{type:e.Int_unsecure(),isOptional:!1},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:e.DateTime(),isOptional:!0}}}),d=r({meta:{name:`openbanking.accounts.list`,version:1,description:`List bank accounts available to a tenant/user via Powens Open Banking.`,goal:`Provide downstream workflows with the set of accounts accessible via the configured open banking connection.`,context:`Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),f=r({meta:{name:`openbanking.accounts.get`,version:1,description:`Retrieve the canonical bank account record for the given account identifier.`,goal:`Allow user-facing experiences and automations to display up-to-date account metadata.`,context:`Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:c,output:i},policy:{auth:`user`}}),p=n({meta:{name:`openbanking.accounts.sync`,version:1,description:`Initiate a synchronisation run to refresh bank account metadata from Powens.`,goal:`Keep canonical bank account records aligned with the external open banking provider.`,context:`Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:l,output:u},policy:{auth:`admin`},telemetry:{success:{event:{name:a.accountsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,connectionId:n?.connectionId,synced:r?.synced,failed:r?.failed}}},failure:{event:{name:a.accountsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,connectionId:n?.connectionId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),m={OpenBankingListAccounts:d,OpenBankingGetAccount:f,OpenBankingSyncAccounts:p};function h(e){return e.register(d).register(f).register(p)}export{f as OpenBankingGetAccount,d as OpenBankingListAccounts,p as OpenBankingSyncAccounts,m as openBankingAccountContracts,h as registerOpenBankingAccountContracts};
2
2
  //# sourceMappingURL=accounts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.js","names":["SchemaModel","ScalarTypeEnum","openBankingAccountContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { BankAccountRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingListAccountsInput = new SchemaModel({\n name: 'OpenBankingListAccountsInput',\n description: 'Parameters for listing bank accounts through the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n institutionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n cursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n pageSize: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingListAccountsOutput = new SchemaModel({\n name: 'OpenBankingListAccountsOutput',\n description: 'Paginated list of bank accounts available to the tenant and user.',\n fields: {\n accounts: {\n type: BankAccountRecord,\n isOptional: false,\n isArray: true,\n },\n nextCursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n hasMore: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingGetAccountInput = new SchemaModel({\n name: 'OpenBankingGetAccountInput',\n description: 'Parameters for retrieving a specific bank account.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n includeLatestTransactions: {\n type: ScalarTypeEnum.Boolean(),\n isOptional: true,\n },\n },\n});\n\nconst OpenBankingSyncAccountsInput = new SchemaModel({\n name: 'OpenBankingSyncAccountsInput',\n description:\n 'Command payload to trigger an account synchronisation against the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: true },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountIds: {\n type: ScalarTypeEnum.ID(),\n isArray: true,\n isOptional: true,\n },\n forceFullRefresh: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n triggerWorkflows: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncAccountsOutput = new SchemaModel({\n name: 'OpenBankingSyncAccountsOutput',\n description: 'Result of a bank account synchronisation run.',\n fields: {\n synced: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n failed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n nextSyncSuggestedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingListAccounts = defineQuery({\n meta: {\n name: 'openbanking.accounts.list',\n version: 1,\n description: 'List bank accounts available to a tenant/user via Powens Open Banking.',\n goal: 'Provide downstream workflows with the set of accounts accessible via the configured open banking connection.',\n context:\n 'Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingListAccountsInput,\n output: OpenBankingListAccountsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingGetAccount = defineQuery({\n meta: {\n name: 'openbanking.accounts.get',\n version: 1,\n description: 'Retrieve the canonical bank account record for the given account identifier.',\n goal: 'Allow user-facing experiences and automations to display up-to-date account metadata.',\n context:\n 'Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingGetAccountInput,\n output: BankAccountRecord,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingSyncAccounts = defineCommand({\n meta: {\n name: 'openbanking.accounts.sync',\n version: 1,\n description: 'Initiate a synchronisation run to refresh bank account metadata from Powens.',\n goal: 'Keep canonical bank account records aligned with the external open banking provider.',\n context:\n 'Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingSyncAccountsInput,\n output: OpenBankingSyncAccountsOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n const result = output as {\n synced?: number;\n failed?: number;\n } | null;\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n synced: result?.synced,\n failed: result?.failed,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingAccountContracts: Record<string, ContractSpec<any, any>> =\n {\n OpenBankingListAccounts,\n OpenBankingGetAccount,\n OpenBankingSyncAccounts,\n };\n\nexport function registerOpenBankingAccountContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingListAccounts)\n .register(OpenBankingGetAccount)\n .register(OpenBankingSyncAccounts);\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"accounts.js","names":["openBankingAccountContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { BankAccountRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingListAccountsInput = new SchemaModel({\n name: 'OpenBankingListAccountsInput',\n description: 'Parameters for listing bank accounts through the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n institutionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n cursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n pageSize: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingListAccountsOutput = new SchemaModel({\n name: 'OpenBankingListAccountsOutput',\n description: 'Paginated list of bank accounts available to the tenant and user.',\n fields: {\n accounts: {\n type: BankAccountRecord,\n isOptional: false,\n isArray: true,\n },\n nextCursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n hasMore: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingGetAccountInput = new SchemaModel({\n name: 'OpenBankingGetAccountInput',\n description: 'Parameters for retrieving a specific bank account.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n includeLatestTransactions: {\n type: ScalarTypeEnum.Boolean(),\n isOptional: true,\n },\n },\n});\n\nconst OpenBankingSyncAccountsInput = new SchemaModel({\n name: 'OpenBankingSyncAccountsInput',\n description:\n 'Command payload to trigger an account synchronisation against the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: true },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountIds: {\n type: ScalarTypeEnum.ID(),\n isArray: true,\n isOptional: true,\n },\n forceFullRefresh: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n triggerWorkflows: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncAccountsOutput = new SchemaModel({\n name: 'OpenBankingSyncAccountsOutput',\n description: 'Result of a bank account synchronisation run.',\n fields: {\n synced: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n failed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n nextSyncSuggestedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingListAccounts = defineQuery({\n meta: {\n name: 'openbanking.accounts.list',\n version: 1,\n description: 'List bank accounts available to a tenant/user via Powens Open Banking.',\n goal: 'Provide downstream workflows with the set of accounts accessible via the configured open banking connection.',\n context:\n 'Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingListAccountsInput,\n output: OpenBankingListAccountsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingGetAccount = defineQuery({\n meta: {\n name: 'openbanking.accounts.get',\n version: 1,\n description: 'Retrieve the canonical bank account record for the given account identifier.',\n goal: 'Allow user-facing experiences and automations to display up-to-date account metadata.',\n context:\n 'Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingGetAccountInput,\n output: BankAccountRecord,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingSyncAccounts = defineCommand({\n meta: {\n name: 'openbanking.accounts.sync',\n version: 1,\n description: 'Initiate a synchronisation run to refresh bank account metadata from Powens.',\n goal: 'Keep canonical bank account records aligned with the external open banking provider.',\n context:\n 'Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingSyncAccountsInput,\n output: OpenBankingSyncAccountsOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n const result = output as {\n synced?: number;\n failed?: number;\n } | null;\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n synced: result?.synced,\n failed: result?.failed,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingAccountContracts: Record<string, ContractSpec<any, any>> =\n {\n OpenBankingListAccounts,\n OpenBankingGetAccount,\n OpenBankingSyncAccounts,\n };\n\nexport function registerOpenBankingAccountContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingListAccounts)\n .register(OpenBankingGetAccount)\n .register(OpenBankingSyncAccounts);\n}\n\n"],"mappings":"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"}