@lssm/lib.contracts 1.7.3 → 1.9.0
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.
- package/README.md +62 -325
- package/dist/app-config/contracts.d.ts +51 -49
- package/dist/app-config/contracts.d.ts.map +1 -1
- package/dist/app-config/contracts.js +1 -1
- package/dist/app-config/contracts.js.map +1 -1
- package/dist/app-config/events.d.ts +28 -26
- package/dist/app-config/events.d.ts.map +1 -1
- package/dist/app-config/events.js +1 -1
- package/dist/app-config/events.js.map +1 -1
- package/dist/app-config/lifecycle-contracts.d.ts +81 -79
- package/dist/app-config/lifecycle-contracts.d.ts.map +1 -1
- package/dist/app-config/lifecycle-contracts.js +1 -1
- package/dist/app-config/lifecycle-contracts.js.map +1 -1
- package/dist/app-config/runtime.d.ts.map +1 -1
- package/dist/app-config/runtime.js.map +1 -1
- package/dist/app-config/spec.d.ts +2 -2
- package/dist/app-config/spec.d.ts.map +1 -1
- package/dist/app-config/spec.js.map +1 -1
- package/dist/app-config/validation.d.ts.map +1 -1
- package/dist/app-config/validation.js.map +1 -1
- package/dist/capabilities/openbanking.d.ts.map +1 -1
- package/dist/capabilities/openbanking.js.map +1 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/client/react/form-render.d.ts +1 -0
- package/dist/client/react/form-render.d.ts.map +1 -1
- package/dist/contracts-adapter-input.d.ts +1 -0
- package/dist/contracts-adapter-input.d.ts.map +1 -1
- package/dist/data-views/query-generator.d.ts +40 -0
- package/dist/data-views/query-generator.d.ts.map +1 -0
- package/dist/data-views/query-generator.js +2 -0
- package/dist/data-views/query-generator.js.map +1 -0
- package/dist/data-views/runtime.d.ts +27 -0
- package/dist/data-views/runtime.d.ts.map +1 -0
- package/dist/data-views/runtime.js +2 -0
- package/dist/data-views/runtime.js.map +1 -0
- package/dist/data-views.js.map +1 -1
- package/dist/events.d.ts +1 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/experiments/evaluator.d.ts.map +1 -1
- package/dist/experiments/evaluator.js.map +1 -1
- package/dist/experiments/spec-resolver.d.ts +17 -0
- package/dist/experiments/spec-resolver.d.ts.map +1 -0
- package/dist/experiments/spec-resolver.js +0 -0
- package/dist/experiments/spec.js.map +1 -1
- package/dist/forms.d.ts +1 -0
- package/dist/forms.d.ts.map +1 -1
- package/dist/graphql-federation/dist/index.js +2 -0
- package/dist/graphql-federation/dist/index.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +1 -1
- package/dist/install.d.ts +1 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/integrations/connection.d.ts.map +1 -1
- package/dist/integrations/contracts.d.ts +103 -101
- package/dist/integrations/contracts.d.ts.map +1 -1
- package/dist/integrations/contracts.js +1 -1
- package/dist/integrations/contracts.js.map +1 -1
- package/dist/integrations/health.d.ts.map +1 -1
- package/dist/integrations/health.js.map +1 -1
- package/dist/integrations/openbanking/contracts/accounts.d.ts +67 -65
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -1
- package/dist/integrations/openbanking/contracts/accounts.js +1 -1
- package/dist/integrations/openbanking/contracts/accounts.js.map +1 -1
- package/dist/integrations/openbanking/contracts/balances.d.ts +35 -33
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -1
- package/dist/integrations/openbanking/contracts/balances.js +1 -1
- package/dist/integrations/openbanking/contracts/balances.js.map +1 -1
- package/dist/integrations/openbanking/contracts/index.js.map +1 -1
- package/dist/integrations/openbanking/contracts/transactions.d.ts +49 -47
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -1
- package/dist/integrations/openbanking/contracts/transactions.js +1 -1
- package/dist/integrations/openbanking/contracts/transactions.js.map +1 -1
- package/dist/integrations/openbanking/guards.js.map +1 -1
- package/dist/integrations/openbanking/models.d.ts +57 -54
- package/dist/integrations/openbanking/models.d.ts.map +1 -1
- package/dist/integrations/openbanking/models.js +1 -1
- package/dist/integrations/openbanking/models.js.map +1 -1
- package/dist/integrations/openbanking/telemetry.js.map +1 -1
- package/dist/integrations/providers/elevenlabs.d.ts.map +1 -1
- package/dist/integrations/providers/elevenlabs.js.map +1 -1
- package/dist/integrations/providers/gcs-storage.js.map +1 -1
- package/dist/integrations/providers/gmail.d.ts.map +1 -1
- package/dist/integrations/providers/gmail.js.map +1 -1
- package/dist/integrations/providers/google-calendar.js.map +1 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -1
- package/dist/integrations/providers/impls/gcs-storage.js.map +1 -1
- package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -1
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -1
- package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -1
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -1
- package/dist/integrations/providers/impls/google-calendar.js.map +1 -1
- package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -1
- package/dist/integrations/providers/impls/mistral-llm.js.map +1 -1
- package/dist/integrations/providers/impls/postmark-email.js.map +1 -1
- package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -1
- package/dist/integrations/providers/impls/powens-client.js.map +1 -1
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -1
- package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -1
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -1
- package/dist/integrations/providers/impls/provider-factory.js.map +1 -1
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -1
- package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -1
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -1
- package/dist/integrations/providers/impls/stripe-payments.js.map +1 -1
- package/dist/integrations/providers/impls/twilio-sms.js.map +1 -1
- package/dist/integrations/providers/llm.d.ts.map +1 -1
- package/dist/integrations/providers/mistral.d.ts.map +1 -1
- package/dist/integrations/providers/mistral.js.map +1 -1
- package/dist/integrations/providers/payments.d.ts.map +1 -1
- package/dist/integrations/providers/postmark.d.ts.map +1 -1
- package/dist/integrations/providers/postmark.js.map +1 -1
- package/dist/integrations/providers/powens.js.map +1 -1
- package/dist/integrations/providers/qdrant.d.ts.map +1 -1
- package/dist/integrations/providers/qdrant.js.map +1 -1
- package/dist/integrations/providers/stripe.js.map +1 -1
- package/dist/integrations/providers/twilio-sms.js.map +1 -1
- package/dist/integrations/runtime.d.ts.map +1 -1
- package/dist/integrations/runtime.js.map +1 -1
- package/dist/integrations/secrets/env-secret-provider.js.map +1 -1
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -1
- package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -1
- package/dist/integrations/secrets/manager.d.ts +2 -2
- package/dist/integrations/secrets/manager.d.ts.map +1 -1
- package/dist/integrations/secrets/manager.js.map +1 -1
- package/dist/integrations/secrets/provider.js.map +1 -1
- package/dist/integrations/spec.d.ts.map +1 -1
- package/dist/integrations/spec.js.map +1 -1
- package/dist/jobs/gcp-cloud-tasks.js.map +1 -1
- package/dist/jobs/gcp-pubsub.d.ts.map +1 -1
- package/dist/jobs/gcp-pubsub.js.map +1 -1
- package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -1
- package/dist/jobs/handlers/storage-document-handler.js.map +1 -1
- package/dist/jobs/memory-queue.d.ts.map +1 -1
- package/dist/jobs/memory-queue.js.map +1 -1
- package/dist/jobs/queue.d.ts.map +1 -1
- package/dist/jsonschema.d.ts +1 -1
- package/dist/jsonschema.d.ts.map +1 -1
- package/dist/knowledge/contracts.d.ts +67 -65
- package/dist/knowledge/contracts.d.ts.map +1 -1
- package/dist/knowledge/contracts.js +1 -1
- package/dist/knowledge/contracts.js.map +1 -1
- package/dist/knowledge/ingestion/document-processor.js.map +1 -1
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -1
- package/dist/knowledge/ingestion/embedding-service.js.map +1 -1
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -1
- package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -1
- package/dist/knowledge/ingestion/storage-adapter.js.map +1 -1
- package/dist/knowledge/ingestion/vector-indexer.js.map +1 -1
- package/dist/knowledge/query/service.d.ts +2 -2
- package/dist/knowledge/query/service.d.ts.map +1 -1
- package/dist/knowledge/query/service.js.map +1 -1
- package/dist/knowledge/runtime.d.ts.map +1 -1
- package/dist/knowledge/runtime.js.map +1 -1
- package/dist/knowledge/spaces/email-threads.js.map +1 -1
- package/dist/knowledge/spaces/financial-docs.js.map +1 -1
- package/dist/knowledge/spaces/financial-overview.js.map +1 -1
- package/dist/knowledge/spaces/product-canon.js.map +1 -1
- package/dist/knowledge/spaces/support-faq.js.map +1 -1
- package/dist/knowledge/spaces/uploaded-docs.js.map +1 -1
- package/dist/knowledge/spec.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js.map +1 -1
- package/dist/onboarding-base.d.ts +30 -28
- package/dist/onboarding-base.d.ts.map +1 -1
- package/dist/onboarding-base.js +1 -1
- package/dist/onboarding-base.js.map +1 -1
- package/dist/policy/engine.js.map +1 -1
- package/dist/policy/opa-adapter.d.ts.map +1 -1
- package/dist/policy/opa-adapter.js.map +1 -1
- package/dist/policy/spec.d.ts.map +1 -1
- package/dist/policy/spec.js.map +1 -1
- package/dist/presentations.d.ts +1 -0
- package/dist/presentations.d.ts.map +1 -1
- package/dist/presentations.v2.d.ts +1 -0
- package/dist/presentations.v2.d.ts.map +1 -1
- package/dist/regenerator/executor.d.ts.map +1 -1
- package/dist/regenerator/executor.js.map +1 -1
- package/dist/regenerator/service.d.ts.map +1 -1
- package/dist/regenerator/service.js.map +1 -1
- package/dist/regenerator/sinks.d.ts.map +1 -1
- package/dist/regenerator/sinks.js.map +1 -1
- package/dist/regenerator/types.d.ts.map +1 -1
- package/dist/regenerator/utils.js.map +1 -1
- package/dist/registry.d.ts +37 -9
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/schema/dist/FieldType.js +2 -0
- package/dist/schema/dist/FieldType.js.map +1 -0
- package/dist/schema/dist/ScalarTypeEnum.js +2 -0
- package/dist/schema/dist/ScalarTypeEnum.js.map +1 -0
- package/dist/schema/{src → dist}/SchemaModel.js +1 -1
- package/dist/schema/dist/SchemaModel.js.map +1 -0
- package/dist/schema/dist/index.js +1 -0
- package/dist/server/graphql-pothos.d.ts +15 -2
- package/dist/server/graphql-pothos.d.ts.map +1 -1
- package/dist/server/graphql-pothos.js.map +1 -1
- package/dist/server/graphql-schema-export.js +1 -1
- package/dist/server/graphql-schema-export.js.map +1 -1
- package/dist/server/provider-mcp.d.ts +22 -4
- package/dist/server/provider-mcp.d.ts.map +1 -1
- package/dist/server/provider-mcp.js.map +1 -1
- package/dist/server/rest-next-app.d.ts +23 -3
- package/dist/server/rest-next-app.d.ts.map +1 -1
- package/dist/server/rest-next-app.js.map +1 -1
- package/dist/spec.d.ts +23 -0
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/telemetry/anomaly.js.map +1 -1
- package/dist/telemetry/spec.d.ts.map +1 -1
- package/dist/telemetry/spec.js.map +1 -1
- package/dist/telemetry/tracker.d.ts.map +1 -1
- package/dist/telemetry/tracker.js.map +1 -1
- package/dist/tests/runner.js.map +1 -1
- package/dist/tests/spec.js.map +1 -1
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js.map +1 -1
- package/dist/types/all.d.ts +2 -2
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow/adapters/db-adapter.d.ts +30 -10
- package/dist/workflow/adapters/db-adapter.d.ts.map +1 -1
- package/dist/workflow/adapters/db-adapter.js +1 -1
- package/dist/workflow/adapters/db-adapter.js.map +1 -1
- package/dist/workflow/adapters/file-adapter.js.map +1 -1
- package/dist/workflow/adapters/index.d.ts +2 -2
- package/dist/workflow/adapters/index.js +1 -1
- package/dist/workflow/adapters/memory-store.d.ts.map +1 -1
- package/dist/workflow/adapters/memory-store.js.map +1 -1
- package/dist/workflow/expression.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -2
- package/dist/workflow/index.js +1 -1
- package/dist/workflow/runner.d.ts +1 -0
- package/dist/workflow/runner.d.ts.map +1 -1
- package/dist/workflow/runner.js +1 -1
- package/dist/workflow/runner.js.map +1 -1
- package/dist/workflow/sla-monitor.d.ts +21 -0
- package/dist/workflow/sla-monitor.d.ts.map +1 -0
- package/dist/workflow/sla-monitor.js +2 -0
- package/dist/workflow/sla-monitor.js.map +1 -0
- package/dist/workflow/spec.d.ts.map +1 -1
- package/dist/workflow/spec.js.map +1 -1
- package/dist/workflow/state.d.ts +1 -0
- package/dist/workflow/state.d.ts.map +1 -1
- package/dist/workflow/validation.d.ts.map +1 -1
- package/dist/workflow/validation.js.map +1 -1
- package/package.json +181 -177
- package/dist/graphql-federation/src/index.js +0 -2
- package/dist/graphql-federation/src/index.js.map +0 -1
- package/dist/schema/src/FieldType.js +0 -2
- package/dist/schema/src/FieldType.js.map +0 -1
- package/dist/schema/src/ScalarTypeEnum.js +0 -2
- package/dist/schema/src/ScalarTypeEnum.js.map +0 -1
- package/dist/schema/src/SchemaModel.js.map +0 -1
- package/dist/schema/src/index.js +0 -1
- /package/dist/schema/{src → dist}/EnumType.js +0 -0
|
@@ -1 +1 @@
|
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"contracts.js","names":["SchemaModel","ScalarTypeEnum","integrationContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":["import { ScalarTypeEnum, SchemaModel } from '@lssm/lib.schema';\nimport { defineCommand, defineQuery, type ContractSpec } 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: {\n type: ScalarTypeEnum.NonEmptyString(),\n isOptional: false,\n },\n integrationVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n externalAccountId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n secretProvider: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\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: {\n type: ScalarTypeEnum.Float_unsecure(),\n isOptional: true,\n },\n healthErrorCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\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: {\n type: ScalarTypeEnum.NonEmptyString(),\n isOptional: false,\n },\n integrationVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n externalAccountId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n secretProvider: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\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: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n secretProvider: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\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:\n '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:\n '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<string, ContractSpec<any, any>> = {\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","names":[],"sources":["../../src/integrations/health.ts"],"sourcesContent":[],"mappings":";;;;UAOiB,4BAAA,
|
|
1
|
+
{"version":3,"file":"health.d.ts","names":[],"sources":["../../src/integrations/health.ts"],"sourcesContent":[],"mappings":";;;;UAOiB,4BAAA,SACP;aACG;AAFb;AAKY,KAAA,8BAAA,GAA8B,CAAA,OAC/B,EAAA,kBACN,EAAA,GAAA,OAAO,CAAA,IAAA,CAAA;AAEK,UAAA,+BAAA,CAA+B;EAKnC,SAAA,CAAA,EAJC,2BAIuB;EAId,GAAA,CAAA,EAAA,GAAA,GAPT,IAOS;;AAOT,cAXD,wBAAA,CAWC;EACD,iBAAA,SAAA;EAAR,iBAAA,KAAA;EAAO,WAAA,CAAA,OAAA,CAAA,EARW,+BAQX;iBAFC,8BACC,iCACT,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","names":["result: IntegrationHealthCheckResult"],"sources":["../../src/integrations/health.ts"],"sourcesContent":["import type { IntegrationConnectionHealth } from './connection';\nimport type {\n IntegrationContext,\n IntegrationInvocationStatus,\n IntegrationTelemetryEmitter,\n} from './runtime';\n\nexport interface IntegrationHealthCheckResult
|
|
1
|
+
{"version":3,"file":"health.js","names":["result: IntegrationHealthCheckResult"],"sources":["../../src/integrations/health.ts"],"sourcesContent":["import type { IntegrationConnectionHealth } from './connection';\nimport type {\n IntegrationContext,\n IntegrationInvocationStatus,\n IntegrationTelemetryEmitter,\n} from './runtime';\n\nexport interface IntegrationHealthCheckResult\n extends IntegrationConnectionHealth {\n metadata?: Record<string, string>;\n}\n\nexport type IntegrationHealthCheckExecutor = (\n context: IntegrationContext\n) => Promise<void>;\n\nexport interface IntegrationHealthServiceOptions {\n telemetry?: IntegrationTelemetryEmitter;\n now?: () => Date;\n}\n\nexport class IntegrationHealthService {\n private readonly telemetry?: IntegrationTelemetryEmitter;\n private readonly nowFn: () => Date;\n\n constructor(options: IntegrationHealthServiceOptions = {}) {\n this.telemetry = options.telemetry;\n this.nowFn = options.now ?? (() => new Date());\n }\n\n async check(\n context: IntegrationContext,\n executor: IntegrationHealthCheckExecutor\n ): Promise<IntegrationHealthCheckResult> {\n const start = this.nowFn();\n try {\n await executor(context);\n const end = this.nowFn();\n const result: IntegrationHealthCheckResult = {\n status: 'connected',\n checkedAt: end,\n latencyMs: end.getTime() - start.getTime(),\n };\n this.emitTelemetry(context, result, 'success');\n return result;\n } catch (error) {\n const end = this.nowFn();\n const message = error instanceof Error ? error.message : 'Unknown error';\n const code = extractErrorCode(error);\n const result: IntegrationHealthCheckResult = {\n status: 'error',\n checkedAt: end,\n latencyMs: end.getTime() - start.getTime(),\n errorMessage: message,\n errorCode: code,\n };\n this.emitTelemetry(context, result, 'error', code, message);\n return result;\n }\n }\n\n private emitTelemetry(\n context: IntegrationContext,\n result: IntegrationHealthCheckResult,\n status: IntegrationInvocationStatus,\n errorCode?: string,\n errorMessage?: string\n ) {\n if (!this.telemetry) return;\n this.telemetry.record({\n tenantId: context.tenantId,\n appId: context.appId,\n environment: context.environment,\n slotId: context.slotId,\n integrationKey: context.spec.meta.key,\n integrationVersion: context.spec.meta.version,\n connectionId: context.connection.meta.id,\n status,\n durationMs: result.latencyMs,\n errorCode,\n errorMessage,\n occurredAt: result.checkedAt ?? this.nowFn(),\n metadata: {\n ...(context.trace\n ? {\n blueprint: `${context.trace.blueprintName}.v${context.trace.blueprintVersion}`,\n configVersion: context.trace.configVersion,\n }\n : {}),\n status: result.status,\n },\n });\n }\n}\n\nfunction extractErrorCode(error: unknown): string | undefined {\n if (!error || typeof error !== 'object') return undefined;\n const candidate = error as { code?: string | number };\n if (candidate.code == null) return undefined;\n return String(candidate.code);\n}\n"],"mappings":"AAqBA,IAAa,EAAb,KAAsC,CACpC,UACA,MAEA,YAAY,EAA2C,EAAE,CAAE,CACzD,KAAK,UAAY,EAAQ,UACzB,KAAK,MAAQ,EAAQ,UAAc,IAAI,MAGzC,MAAM,MACJ,EACA,EACuC,CACvC,IAAM,EAAQ,KAAK,OAAO,CAC1B,GAAI,CACF,MAAM,EAAS,EAAQ,CACvB,IAAM,EAAM,KAAK,OAAO,CAClBA,EAAuC,CAC3C,OAAQ,YACR,UAAW,EACX,UAAW,EAAI,SAAS,CAAG,EAAM,SAAS,CAC3C,CAED,OADA,KAAK,cAAc,EAAS,EAAQ,UAAU,CACvC,QACA,EAAO,CACd,IAAM,EAAM,KAAK,OAAO,CAClB,EAAU,aAAiB,MAAQ,EAAM,QAAU,gBACnD,EAAO,EAAiB,EAAM,CAC9BA,EAAuC,CAC3C,OAAQ,QACR,UAAW,EACX,UAAW,EAAI,SAAS,CAAG,EAAM,SAAS,CAC1C,aAAc,EACd,UAAW,EACZ,CAED,OADA,KAAK,cAAc,EAAS,EAAQ,QAAS,EAAM,EAAQ,CACpD,GAIX,cACE,EACA,EACA,EACA,EACA,EACA,CACK,KAAK,WACV,KAAK,UAAU,OAAO,CACpB,SAAU,EAAQ,SAClB,MAAO,EAAQ,MACf,YAAa,EAAQ,YACrB,OAAQ,EAAQ,OAChB,eAAgB,EAAQ,KAAK,KAAK,IAClC,mBAAoB,EAAQ,KAAK,KAAK,QACtC,aAAc,EAAQ,WAAW,KAAK,GACtC,SACA,WAAY,EAAO,UACnB,YACA,eACA,WAAY,EAAO,WAAa,KAAK,OAAO,CAC5C,SAAU,CACR,GAAI,EAAQ,MACR,CACE,UAAW,GAAG,EAAQ,MAAM,cAAc,IAAI,EAAQ,MAAM,mBAC5D,cAAe,EAAQ,MAAM,cAC9B,CACD,EAAE,CACN,OAAQ,EAAO,OAChB,CACF,CAAC,GAIN,SAAS,EAAiB,EAAoC,CAC5D,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,OACzC,IAAM,EAAY,EACd,KAAU,MAAQ,KACtB,OAAO,OAAO,EAAU,KAAK"}
|
|
@@ -1,121 +1,123 @@
|
|
|
1
1
|
import { ContractSpec } from "../../../spec.js";
|
|
2
2
|
import { SpecRegistry } from "../../../registry.js";
|
|
3
|
+
import * as _lssm_lib_schema481 from "@lssm/lib.schema";
|
|
4
|
+
import { SchemaModel } from "@lssm/lib.schema";
|
|
3
5
|
|
|
4
6
|
//#region src/integrations/openbanking/contracts/accounts.d.ts
|
|
5
7
|
declare const OpenBankingListAccounts: ContractSpec<SchemaModel<{
|
|
6
8
|
tenantId: {
|
|
7
|
-
type:
|
|
9
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
8
10
|
isOptional: false;
|
|
9
11
|
};
|
|
10
12
|
userId: {
|
|
11
|
-
type:
|
|
13
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
12
14
|
isOptional: false;
|
|
13
15
|
};
|
|
14
16
|
connectionId: {
|
|
15
|
-
type:
|
|
17
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
16
18
|
isOptional: true;
|
|
17
19
|
};
|
|
18
20
|
includeBalances: {
|
|
19
|
-
type:
|
|
21
|
+
type: _lssm_lib_schema481.FieldType<boolean, boolean>;
|
|
20
22
|
isOptional: true;
|
|
21
23
|
};
|
|
22
24
|
institutionId: {
|
|
23
|
-
type:
|
|
25
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
24
26
|
isOptional: true;
|
|
25
27
|
};
|
|
26
28
|
cursor: {
|
|
27
|
-
type:
|
|
29
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
28
30
|
isOptional: true;
|
|
29
31
|
};
|
|
30
32
|
pageSize: {
|
|
31
|
-
type:
|
|
33
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
32
34
|
isOptional: true;
|
|
33
35
|
};
|
|
34
36
|
}>, SchemaModel<{
|
|
35
37
|
accounts: {
|
|
36
38
|
type: SchemaModel<{
|
|
37
39
|
id: {
|
|
38
|
-
type:
|
|
40
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
39
41
|
isOptional: false;
|
|
40
42
|
};
|
|
41
43
|
tenantId: {
|
|
42
|
-
type:
|
|
44
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
43
45
|
isOptional: false;
|
|
44
46
|
};
|
|
45
47
|
userId: {
|
|
46
|
-
type:
|
|
48
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
47
49
|
isOptional: false;
|
|
48
50
|
};
|
|
49
51
|
connectionId: {
|
|
50
|
-
type:
|
|
52
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
51
53
|
isOptional: false;
|
|
52
54
|
};
|
|
53
55
|
externalId: {
|
|
54
|
-
type:
|
|
56
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
55
57
|
isOptional: false;
|
|
56
58
|
};
|
|
57
59
|
institutionId: {
|
|
58
|
-
type:
|
|
60
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
59
61
|
isOptional: false;
|
|
60
62
|
};
|
|
61
63
|
institutionName: {
|
|
62
|
-
type:
|
|
64
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
63
65
|
isOptional: false;
|
|
64
66
|
};
|
|
65
67
|
institutionLogoUrl: {
|
|
66
|
-
type:
|
|
68
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
67
69
|
isOptional: true;
|
|
68
70
|
};
|
|
69
71
|
iban: {
|
|
70
|
-
type:
|
|
72
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
71
73
|
isOptional: true;
|
|
72
74
|
};
|
|
73
75
|
bic: {
|
|
74
|
-
type:
|
|
76
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
75
77
|
isOptional: true;
|
|
76
78
|
};
|
|
77
79
|
accountType: {
|
|
78
|
-
type:
|
|
80
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
79
81
|
isOptional: false;
|
|
80
82
|
};
|
|
81
83
|
currency: {
|
|
82
|
-
type:
|
|
84
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
83
85
|
isOptional: false;
|
|
84
86
|
};
|
|
85
87
|
displayName: {
|
|
86
|
-
type:
|
|
88
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
87
89
|
isOptional: false;
|
|
88
90
|
};
|
|
89
91
|
accountNumberMasked: {
|
|
90
|
-
type:
|
|
92
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
91
93
|
isOptional: true;
|
|
92
94
|
};
|
|
93
95
|
productCode: {
|
|
94
|
-
type:
|
|
96
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
95
97
|
isOptional: true;
|
|
96
98
|
};
|
|
97
99
|
balance: {
|
|
98
|
-
type:
|
|
100
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
99
101
|
isOptional: true;
|
|
100
102
|
};
|
|
101
103
|
availableBalance: {
|
|
102
|
-
type:
|
|
104
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
103
105
|
isOptional: true;
|
|
104
106
|
};
|
|
105
107
|
lastSyncedAt: {
|
|
106
|
-
type:
|
|
108
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
107
109
|
isOptional: false;
|
|
108
110
|
};
|
|
109
111
|
createdAt: {
|
|
110
|
-
type:
|
|
112
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
111
113
|
isOptional: false;
|
|
112
114
|
};
|
|
113
115
|
updatedAt: {
|
|
114
|
-
type:
|
|
116
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
115
117
|
isOptional: false;
|
|
116
118
|
};
|
|
117
119
|
metadata: {
|
|
118
|
-
type:
|
|
120
|
+
type: _lssm_lib_schema481.FieldType<Record<string, unknown>, Record<string, unknown>>;
|
|
119
121
|
isOptional: true;
|
|
120
122
|
};
|
|
121
123
|
}>;
|
|
@@ -123,159 +125,159 @@ declare const OpenBankingListAccounts: ContractSpec<SchemaModel<{
|
|
|
123
125
|
isArray: true;
|
|
124
126
|
};
|
|
125
127
|
nextCursor: {
|
|
126
|
-
type:
|
|
128
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
127
129
|
isOptional: true;
|
|
128
130
|
};
|
|
129
131
|
hasMore: {
|
|
130
|
-
type:
|
|
132
|
+
type: _lssm_lib_schema481.FieldType<boolean, boolean>;
|
|
131
133
|
isOptional: true;
|
|
132
134
|
};
|
|
133
135
|
}>, undefined>;
|
|
134
136
|
declare const OpenBankingGetAccount: ContractSpec<SchemaModel<{
|
|
135
137
|
tenantId: {
|
|
136
|
-
type:
|
|
138
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
137
139
|
isOptional: false;
|
|
138
140
|
};
|
|
139
141
|
accountId: {
|
|
140
|
-
type:
|
|
142
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
141
143
|
isOptional: false;
|
|
142
144
|
};
|
|
143
145
|
includeBalances: {
|
|
144
|
-
type:
|
|
146
|
+
type: _lssm_lib_schema481.FieldType<boolean, boolean>;
|
|
145
147
|
isOptional: true;
|
|
146
148
|
};
|
|
147
149
|
includeLatestTransactions: {
|
|
148
|
-
type:
|
|
150
|
+
type: _lssm_lib_schema481.FieldType<boolean, boolean>;
|
|
149
151
|
isOptional: true;
|
|
150
152
|
};
|
|
151
153
|
}>, SchemaModel<{
|
|
152
154
|
id: {
|
|
153
|
-
type:
|
|
155
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
154
156
|
isOptional: false;
|
|
155
157
|
};
|
|
156
158
|
tenantId: {
|
|
157
|
-
type:
|
|
159
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
158
160
|
isOptional: false;
|
|
159
161
|
};
|
|
160
162
|
userId: {
|
|
161
|
-
type:
|
|
163
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
162
164
|
isOptional: false;
|
|
163
165
|
};
|
|
164
166
|
connectionId: {
|
|
165
|
-
type:
|
|
167
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
166
168
|
isOptional: false;
|
|
167
169
|
};
|
|
168
170
|
externalId: {
|
|
169
|
-
type:
|
|
171
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
170
172
|
isOptional: false;
|
|
171
173
|
};
|
|
172
174
|
institutionId: {
|
|
173
|
-
type:
|
|
175
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
174
176
|
isOptional: false;
|
|
175
177
|
};
|
|
176
178
|
institutionName: {
|
|
177
|
-
type:
|
|
179
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
178
180
|
isOptional: false;
|
|
179
181
|
};
|
|
180
182
|
institutionLogoUrl: {
|
|
181
|
-
type:
|
|
183
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
182
184
|
isOptional: true;
|
|
183
185
|
};
|
|
184
186
|
iban: {
|
|
185
|
-
type:
|
|
187
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
186
188
|
isOptional: true;
|
|
187
189
|
};
|
|
188
190
|
bic: {
|
|
189
|
-
type:
|
|
191
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
190
192
|
isOptional: true;
|
|
191
193
|
};
|
|
192
194
|
accountType: {
|
|
193
|
-
type:
|
|
195
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
194
196
|
isOptional: false;
|
|
195
197
|
};
|
|
196
198
|
currency: {
|
|
197
|
-
type:
|
|
199
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
198
200
|
isOptional: false;
|
|
199
201
|
};
|
|
200
202
|
displayName: {
|
|
201
|
-
type:
|
|
203
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
202
204
|
isOptional: false;
|
|
203
205
|
};
|
|
204
206
|
accountNumberMasked: {
|
|
205
|
-
type:
|
|
207
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
206
208
|
isOptional: true;
|
|
207
209
|
};
|
|
208
210
|
productCode: {
|
|
209
|
-
type:
|
|
211
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
210
212
|
isOptional: true;
|
|
211
213
|
};
|
|
212
214
|
balance: {
|
|
213
|
-
type:
|
|
215
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
214
216
|
isOptional: true;
|
|
215
217
|
};
|
|
216
218
|
availableBalance: {
|
|
217
|
-
type:
|
|
219
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
218
220
|
isOptional: true;
|
|
219
221
|
};
|
|
220
222
|
lastSyncedAt: {
|
|
221
|
-
type:
|
|
223
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
222
224
|
isOptional: false;
|
|
223
225
|
};
|
|
224
226
|
createdAt: {
|
|
225
|
-
type:
|
|
227
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
226
228
|
isOptional: false;
|
|
227
229
|
};
|
|
228
230
|
updatedAt: {
|
|
229
|
-
type:
|
|
231
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
230
232
|
isOptional: false;
|
|
231
233
|
};
|
|
232
234
|
metadata: {
|
|
233
|
-
type:
|
|
235
|
+
type: _lssm_lib_schema481.FieldType<Record<string, unknown>, Record<string, unknown>>;
|
|
234
236
|
isOptional: true;
|
|
235
237
|
};
|
|
236
238
|
}>, undefined>;
|
|
237
239
|
declare const OpenBankingSyncAccounts: ContractSpec<SchemaModel<{
|
|
238
240
|
tenantId: {
|
|
239
|
-
type:
|
|
241
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
240
242
|
isOptional: false;
|
|
241
243
|
};
|
|
242
244
|
userId: {
|
|
243
|
-
type:
|
|
245
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
244
246
|
isOptional: true;
|
|
245
247
|
};
|
|
246
248
|
connectionId: {
|
|
247
|
-
type:
|
|
249
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
248
250
|
isOptional: false;
|
|
249
251
|
};
|
|
250
252
|
accountIds: {
|
|
251
|
-
type:
|
|
253
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
252
254
|
isArray: true;
|
|
253
255
|
isOptional: true;
|
|
254
256
|
};
|
|
255
257
|
forceFullRefresh: {
|
|
256
|
-
type:
|
|
258
|
+
type: _lssm_lib_schema481.FieldType<boolean, boolean>;
|
|
257
259
|
isOptional: true;
|
|
258
260
|
};
|
|
259
261
|
triggerWorkflows: {
|
|
260
|
-
type:
|
|
262
|
+
type: _lssm_lib_schema481.FieldType<boolean, boolean>;
|
|
261
263
|
isOptional: true;
|
|
262
264
|
};
|
|
263
265
|
}>, SchemaModel<{
|
|
264
266
|
synced: {
|
|
265
|
-
type:
|
|
267
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
266
268
|
isOptional: false;
|
|
267
269
|
};
|
|
268
270
|
failed: {
|
|
269
|
-
type:
|
|
271
|
+
type: _lssm_lib_schema481.FieldType<number, number>;
|
|
270
272
|
isOptional: false;
|
|
271
273
|
};
|
|
272
274
|
errors: {
|
|
273
|
-
type:
|
|
275
|
+
type: _lssm_lib_schema481.FieldType<string, string>;
|
|
274
276
|
isArray: true;
|
|
275
277
|
isOptional: true;
|
|
276
278
|
};
|
|
277
279
|
nextSyncSuggestedAt: {
|
|
278
|
-
type:
|
|
280
|
+
type: _lssm_lib_schema481.FieldType<Date, string>;
|
|
279
281
|
isOptional: true;
|
|
280
282
|
};
|
|
281
283
|
}>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":[],"mappings":";;;;;;cAsFa,yBAAuB,aAAA;;UAoBlC,mBAAA,CAAA;IApBW,UAAA,EAAA,KAAA;EAoBX,CAAA;;;;;;;IApBkC,UAAA,EAAA,IAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;cAAA,mBAAA,CAAA;;;;;;;;;QAAA,UAAA,EAAA,KAAA;MAAA,CAAA;MAsBvB,YAAA,EAAA;QAoBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;QApBgC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;MAsBrB,CAAA;MAwDX,WAAA,EAAA;;;;;;QAxDkC,UAAA,EAAA,IAAA;MAAA,CAAA;;;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,IAAA;MA0DvB,CAAA;MASG,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAzFH,uBAAqB,aAAA;;UAoBhC,mBAAA,CAAA;;;;;;;;;;;;;;;;;UApBgC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsBrB,yBAAuB,aAAA;;UAwDlC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAxDkC,mBAAA,CAAA;;;;;;;;;;;;;;;;;cA0DvB,6BAA6B,eAExC;iBAOc,mCAAA,WACJ,eACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
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};
|
|
2
2
|
//# sourceMappingURL=accounts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","names":["openBankingAccountContracts: Record
|
|
1
|
+
{"version":3,"file":"accounts.js","names":["SchemaModel","ScalarTypeEnum","openBankingAccountContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":["import { ScalarTypeEnum, SchemaModel } from '@lssm/lib.schema';\nimport { defineCommand, defineQuery, type ContractSpec } 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:\n '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:\n '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:\n '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:\n '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:\n '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:\n error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingAccountContracts: Record<\n string,\n 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"],"mappings":"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"}
|