@lssm/lib.contracts 1.10.0 → 1.11.1
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 +3 -1
- package/dist/app-config/branding.d.ts +1 -2
- package/dist/app-config/contracts.d.ts +51 -52
- package/dist/app-config/contracts.js +1 -2
- package/dist/app-config/events.d.ts +28 -29
- package/dist/app-config/events.js +1 -2
- package/dist/app-config/lifecycle-contracts.d.ts +81 -82
- package/dist/app-config/lifecycle-contracts.js +1 -2
- package/dist/app-config/lifecycle.d.ts +1 -2
- package/dist/app-config/runtime.d.ts +1 -2
- package/dist/app-config/runtime.js +1 -2
- package/dist/app-config/spec.d.ts +1 -2
- package/dist/app-config/spec.js +1 -2
- package/dist/app-config/validation.d.ts +1 -2
- package/dist/app-config/validation.js +1 -2
- package/dist/capabilities/openbanking.d.ts +1 -2
- package/dist/capabilities/openbanking.js +1 -2
- package/dist/capabilities.d.ts +1 -2
- package/dist/capabilities.js +1 -2
- package/dist/client/react/drivers/rn-reusables.d.ts +1 -2
- package/dist/client/react/drivers/rn-reusables.js +1 -2
- package/dist/client/react/drivers/shadcn.d.ts +1 -2
- package/dist/client/react/drivers/shadcn.js +1 -2
- package/dist/client/react/feature-render.d.ts +1 -2
- package/dist/client/react/feature-render.js +1 -2
- package/dist/client/react/form-render.d.ts +1 -2
- package/dist/client/react/form-render.js +1 -2
- package/dist/contracts-adapter-hydration.d.ts +1 -2
- package/dist/contracts-adapter-hydration.js +1 -2
- package/dist/contracts-adapter-input.d.ts +1 -2
- package/dist/contracts-adapter-input.js +1 -2
- package/dist/data-views/query-generator.d.ts +1 -2
- package/dist/data-views/query-generator.js +1 -2
- package/dist/data-views/runtime.d.ts +1 -2
- package/dist/data-views/runtime.js +1 -2
- package/dist/data-views.d.ts +1 -2
- package/dist/data-views.js +1 -2
- package/dist/events.d.ts +1 -2
- package/dist/events.js +1 -2
- package/dist/experiments/evaluator.d.ts +1 -2
- package/dist/experiments/evaluator.js +1 -2
- package/dist/experiments/spec-resolver.d.ts +1 -2
- package/dist/experiments/spec.d.ts +1 -2
- package/dist/experiments/spec.js +1 -2
- package/dist/features.d.ts +1 -2
- package/dist/features.js +1 -2
- package/dist/forms.d.ts +1 -2
- package/dist/forms.js +1 -2
- package/dist/graphql-federation/dist/index.js +1 -2
- package/dist/install.d.ts +1 -2
- package/dist/install.js +1 -2
- package/dist/integrations/binding.d.ts +1 -2
- package/dist/integrations/connection.d.ts +1 -2
- package/dist/integrations/contracts.d.ts +103 -104
- package/dist/integrations/contracts.js +1 -2
- package/dist/integrations/health.d.ts +1 -2
- package/dist/integrations/health.js +1 -2
- package/dist/integrations/openbanking/contracts/accounts.d.ts +67 -68
- package/dist/integrations/openbanking/contracts/accounts.js +1 -2
- package/dist/integrations/openbanking/contracts/balances.d.ts +35 -36
- package/dist/integrations/openbanking/contracts/balances.js +1 -2
- package/dist/integrations/openbanking/contracts/index.d.ts +1 -2
- package/dist/integrations/openbanking/contracts/index.js +1 -2
- package/dist/integrations/openbanking/contracts/transactions.d.ts +49 -50
- package/dist/integrations/openbanking/contracts/transactions.js +1 -2
- package/dist/integrations/openbanking/guards.d.ts +1 -2
- package/dist/integrations/openbanking/guards.js +1 -2
- package/dist/integrations/openbanking/models.d.ts +56 -57
- package/dist/integrations/openbanking/models.js +1 -2
- package/dist/integrations/openbanking/telemetry.d.ts +1 -2
- package/dist/integrations/openbanking/telemetry.js +1 -2
- package/dist/integrations/providers/calendar.d.ts +1 -2
- package/dist/integrations/providers/elevenlabs.d.ts +1 -2
- package/dist/integrations/providers/elevenlabs.js +1 -2
- package/dist/integrations/providers/email.d.ts +1 -2
- package/dist/integrations/providers/embedding.d.ts +1 -2
- package/dist/integrations/providers/gcs-storage.d.ts +1 -2
- package/dist/integrations/providers/gcs-storage.js +1 -2
- package/dist/integrations/providers/gmail.d.ts +1 -2
- package/dist/integrations/providers/gmail.js +1 -2
- package/dist/integrations/providers/google-calendar.d.ts +1 -2
- package/dist/integrations/providers/google-calendar.js +1 -2
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +1 -2
- package/dist/integrations/providers/impls/elevenlabs-voice.js +1 -2
- package/dist/integrations/providers/impls/gcs-storage.d.ts +1 -2
- package/dist/integrations/providers/impls/gcs-storage.js +1 -2
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +1 -2
- package/dist/integrations/providers/impls/gmail-inbound.js +1 -2
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +1 -2
- package/dist/integrations/providers/impls/gmail-outbound.js +1 -2
- package/dist/integrations/providers/impls/google-calendar.d.ts +1 -2
- package/dist/integrations/providers/impls/google-calendar.js +1 -2
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +1 -2
- package/dist/integrations/providers/impls/mistral-embedding.js +1 -2
- package/dist/integrations/providers/impls/mistral-llm.d.ts +1 -2
- package/dist/integrations/providers/impls/mistral-llm.js +1 -2
- package/dist/integrations/providers/impls/postmark-email.d.ts +1 -2
- package/dist/integrations/providers/impls/postmark-email.js +1 -2
- package/dist/integrations/providers/impls/powens-client.d.ts +1 -2
- package/dist/integrations/providers/impls/powens-client.js +1 -2
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +1 -2
- package/dist/integrations/providers/impls/powens-openbanking.js +1 -2
- package/dist/integrations/providers/impls/provider-factory.d.ts +1 -2
- package/dist/integrations/providers/impls/provider-factory.js +1 -2
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +1 -2
- package/dist/integrations/providers/impls/qdrant-vector.js +1 -2
- package/dist/integrations/providers/impls/stripe-payments.d.ts +1 -2
- package/dist/integrations/providers/impls/stripe-payments.js +1 -2
- package/dist/integrations/providers/impls/twilio-sms.d.ts +1 -2
- package/dist/integrations/providers/impls/twilio-sms.js +1 -2
- package/dist/integrations/providers/llm.d.ts +1 -2
- package/dist/integrations/providers/mistral.d.ts +1 -2
- package/dist/integrations/providers/mistral.js +1 -2
- package/dist/integrations/providers/openbanking.d.ts +1 -2
- package/dist/integrations/providers/payments.d.ts +1 -2
- package/dist/integrations/providers/postmark.d.ts +1 -2
- package/dist/integrations/providers/postmark.js +1 -2
- package/dist/integrations/providers/powens.d.ts +1 -2
- package/dist/integrations/providers/powens.js +1 -2
- package/dist/integrations/providers/qdrant.d.ts +1 -2
- package/dist/integrations/providers/qdrant.js +1 -2
- package/dist/integrations/providers/sms.d.ts +1 -2
- package/dist/integrations/providers/storage.d.ts +1 -2
- package/dist/integrations/providers/stripe.d.ts +1 -2
- package/dist/integrations/providers/stripe.js +1 -2
- package/dist/integrations/providers/twilio-sms.d.ts +1 -2
- package/dist/integrations/providers/twilio-sms.js +1 -2
- package/dist/integrations/providers/vector-store.d.ts +1 -2
- package/dist/integrations/providers/voice.d.ts +1 -2
- package/dist/integrations/runtime.d.ts +1 -2
- package/dist/integrations/runtime.js +1 -2
- package/dist/integrations/secrets/env-secret-provider.d.ts +1 -2
- package/dist/integrations/secrets/env-secret-provider.js +1 -2
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +1 -2
- package/dist/integrations/secrets/gcp-secret-manager.js +1 -2
- package/dist/integrations/secrets/manager.d.ts +1 -2
- package/dist/integrations/secrets/manager.js +1 -2
- package/dist/integrations/secrets/provider.d.ts +1 -2
- package/dist/integrations/secrets/provider.js +1 -2
- package/dist/integrations/spec.d.ts +1 -2
- package/dist/integrations/spec.js +1 -2
- package/dist/jobs/gcp-cloud-tasks.d.ts +1 -2
- package/dist/jobs/gcp-cloud-tasks.js +1 -2
- package/dist/jobs/gcp-pubsub.d.ts +1 -2
- package/dist/jobs/gcp-pubsub.js +1 -2
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +1 -2
- package/dist/jobs/handlers/gmail-sync-handler.js +1 -2
- package/dist/jobs/handlers/storage-document-handler.d.ts +1 -2
- package/dist/jobs/handlers/storage-document-handler.js +1 -2
- package/dist/jobs/memory-queue.d.ts +1 -2
- package/dist/jobs/memory-queue.js +1 -2
- package/dist/jobs/queue.d.ts +1 -2
- package/dist/jsonschema.d.ts +1 -2
- package/dist/jsonschema.js +1 -2
- package/dist/knowledge/binding.d.ts +1 -2
- package/dist/knowledge/contracts.d.ts +67 -68
- package/dist/knowledge/contracts.js +1 -2
- package/dist/knowledge/ingestion/document-processor.d.ts +1 -2
- package/dist/knowledge/ingestion/document-processor.js +1 -2
- package/dist/knowledge/ingestion/embedding-service.d.ts +1 -2
- package/dist/knowledge/ingestion/embedding-service.js +1 -2
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +1 -2
- package/dist/knowledge/ingestion/gmail-adapter.js +1 -2
- package/dist/knowledge/ingestion/storage-adapter.d.ts +1 -2
- package/dist/knowledge/ingestion/storage-adapter.js +1 -2
- package/dist/knowledge/ingestion/vector-indexer.d.ts +1 -2
- package/dist/knowledge/ingestion/vector-indexer.js +1 -2
- package/dist/knowledge/query/service.d.ts +1 -2
- package/dist/knowledge/query/service.js +1 -2
- package/dist/knowledge/runtime.d.ts +1 -2
- package/dist/knowledge/runtime.js +1 -2
- package/dist/knowledge/source.d.ts +1 -2
- package/dist/knowledge/spaces/email-threads.d.ts +1 -2
- package/dist/knowledge/spaces/email-threads.js +1 -2
- package/dist/knowledge/spaces/financial-docs.d.ts +1 -2
- package/dist/knowledge/spaces/financial-docs.js +1 -2
- package/dist/knowledge/spaces/financial-overview.d.ts +1 -2
- package/dist/knowledge/spaces/financial-overview.js +1 -2
- package/dist/knowledge/spaces/product-canon.d.ts +1 -2
- package/dist/knowledge/spaces/product-canon.js +1 -2
- package/dist/knowledge/spaces/support-faq.d.ts +1 -2
- package/dist/knowledge/spaces/support-faq.js +1 -2
- package/dist/knowledge/spaces/uploaded-docs.d.ts +1 -2
- package/dist/knowledge/spaces/uploaded-docs.js +1 -2
- package/dist/knowledge/spec.d.ts +1 -2
- package/dist/knowledge/spec.js +1 -2
- package/dist/markdown.d.ts +1 -2
- package/dist/markdown.js +1 -2
- package/dist/migrations.d.ts +1 -2
- package/dist/migrations.js +1 -2
- package/dist/onboarding-base.d.ts +30 -31
- package/dist/onboarding-base.js +1 -2
- package/dist/ownership.d.ts +1 -2
- package/dist/ownership.js +1 -2
- package/dist/policy/engine.d.ts +1 -2
- package/dist/policy/engine.js +1 -2
- package/dist/policy/opa-adapter.d.ts +1 -2
- package/dist/policy/opa-adapter.js +1 -2
- package/dist/policy/spec.d.ts +1 -2
- package/dist/policy/spec.js +1 -2
- package/dist/presentations.backcompat.d.ts +1 -2
- package/dist/presentations.backcompat.js +1 -2
- package/dist/presentations.d.ts +1 -2
- package/dist/presentations.js +1 -2
- package/dist/presentations.v2.d.ts +1 -2
- package/dist/presentations.v2.js +1 -2
- package/dist/prompt.d.ts +1 -2
- package/dist/prompt.js +1 -2
- package/dist/promptRegistry.d.ts +1 -2
- package/dist/promptRegistry.js +1 -2
- package/dist/regenerator/adapters.d.ts +1 -2
- package/dist/regenerator/executor.d.ts +1 -2
- package/dist/regenerator/executor.js +1 -2
- package/dist/regenerator/service.d.ts +1 -2
- package/dist/regenerator/service.js +1 -2
- package/dist/regenerator/sinks.d.ts +1 -2
- package/dist/regenerator/sinks.js +1 -2
- package/dist/regenerator/types.d.ts +1 -2
- package/dist/regenerator/utils.d.ts +1 -2
- package/dist/regenerator/utils.js +1 -2
- package/dist/registry.d.ts +1 -2
- package/dist/registry.js +1 -2
- package/dist/resources.d.ts +1 -2
- package/dist/resources.js +1 -2
- package/dist/schema/dist/FieldType.js +1 -2
- package/dist/schema/dist/ScalarTypeEnum.js +1 -2
- package/dist/schema/dist/SchemaModel.js +1 -2
- package/dist/server/graphql-pothos.d.ts +1 -2
- package/dist/server/graphql-pothos.js +1 -2
- package/dist/server/graphql-schema-export.d.ts +1 -2
- package/dist/server/graphql-schema-export.js +1 -2
- package/dist/server/provider-mcp.d.ts +1 -2
- package/dist/server/provider-mcp.js +1 -2
- package/dist/server/rest-elysia.d.ts +1 -2
- package/dist/server/rest-elysia.js +1 -2
- package/dist/server/rest-express.d.ts +1 -2
- package/dist/server/rest-express.js +1 -2
- package/dist/server/rest-generic.d.ts +1 -2
- package/dist/server/rest-generic.js +1 -2
- package/dist/server/rest-next-app.d.ts +1 -2
- package/dist/server/rest-next-app.js +1 -2
- package/dist/server/rest-next-mcp.d.ts +1 -2
- package/dist/server/rest-next-mcp.js +1 -2
- package/dist/server/rest-next-pages.d.ts +1 -2
- package/dist/server/rest-next-pages.js +1 -2
- package/dist/spec.d.ts +1 -2
- package/dist/spec.js +1 -2
- package/dist/telemetry/anomaly.d.ts +1 -2
- package/dist/telemetry/anomaly.js +1 -2
- package/dist/telemetry/spec.d.ts +1 -2
- package/dist/telemetry/spec.js +1 -2
- package/dist/telemetry/tracker.d.ts +1 -2
- package/dist/telemetry/tracker.js +1 -2
- package/dist/tests/runner.d.ts +1 -2
- package/dist/tests/runner.js +1 -2
- package/dist/tests/spec.d.ts +1 -2
- package/dist/tests/spec.js +1 -2
- package/dist/themes.d.ts +1 -2
- package/dist/themes.js +1 -2
- package/dist/translations/catalog.d.ts +1 -2
- package/dist/translations/tenant.d.ts +1 -2
- package/dist/types.d.ts +1 -2
- package/dist/workflow/adapters/db-adapter.d.ts +1 -2
- package/dist/workflow/adapters/db-adapter.js +1 -2
- package/dist/workflow/adapters/file-adapter.d.ts +1 -2
- package/dist/workflow/adapters/file-adapter.js +1 -2
- package/dist/workflow/adapters/memory-store.d.ts +1 -2
- package/dist/workflow/adapters/memory-store.js +1 -2
- package/dist/workflow/expression.d.ts +1 -2
- package/dist/workflow/expression.js +1 -2
- package/dist/workflow/runner.d.ts +1 -2
- package/dist/workflow/runner.js +1 -2
- package/dist/workflow/sla-monitor.d.ts +1 -2
- package/dist/workflow/sla-monitor.js +1 -2
- package/dist/workflow/spec.d.ts +1 -2
- package/dist/workflow/spec.js +1 -2
- package/dist/workflow/state.d.ts +1 -2
- package/dist/workflow/validation.d.ts +1 -2
- package/dist/workflow/validation.js +1 -2
- package/package.json +14 -12
- package/dist/app-config/branding.d.ts.map +0 -1
- package/dist/app-config/contracts.d.ts.map +0 -1
- package/dist/app-config/contracts.js.map +0 -1
- package/dist/app-config/events.d.ts.map +0 -1
- package/dist/app-config/events.js.map +0 -1
- package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
- package/dist/app-config/lifecycle-contracts.js.map +0 -1
- package/dist/app-config/lifecycle.d.ts.map +0 -1
- package/dist/app-config/runtime.d.ts.map +0 -1
- package/dist/app-config/runtime.js.map +0 -1
- package/dist/app-config/spec.d.ts.map +0 -1
- package/dist/app-config/spec.js.map +0 -1
- package/dist/app-config/validation.d.ts.map +0 -1
- package/dist/app-config/validation.js.map +0 -1
- package/dist/capabilities/openbanking.d.ts.map +0 -1
- package/dist/capabilities/openbanking.js.map +0 -1
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js.map +0 -1
- package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
- package/dist/client/react/drivers/rn-reusables.js.map +0 -1
- package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
- package/dist/client/react/drivers/shadcn.js.map +0 -1
- package/dist/client/react/feature-render.d.ts.map +0 -1
- package/dist/client/react/feature-render.js.map +0 -1
- package/dist/client/react/form-render.d.ts.map +0 -1
- package/dist/client/react/form-render.js.map +0 -1
- package/dist/contracts-adapter-hydration.d.ts.map +0 -1
- package/dist/contracts-adapter-hydration.js.map +0 -1
- package/dist/contracts-adapter-input.d.ts.map +0 -1
- package/dist/contracts-adapter-input.js.map +0 -1
- package/dist/data-views/query-generator.d.ts.map +0 -1
- package/dist/data-views/query-generator.js.map +0 -1
- package/dist/data-views/runtime.d.ts.map +0 -1
- package/dist/data-views/runtime.js.map +0 -1
- package/dist/data-views.d.ts.map +0 -1
- package/dist/data-views.js.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/experiments/evaluator.d.ts.map +0 -1
- package/dist/experiments/evaluator.js.map +0 -1
- package/dist/experiments/spec-resolver.d.ts.map +0 -1
- package/dist/experiments/spec.d.ts.map +0 -1
- package/dist/experiments/spec.js.map +0 -1
- package/dist/features.d.ts.map +0 -1
- package/dist/features.js.map +0 -1
- package/dist/forms.d.ts.map +0 -1
- package/dist/forms.js.map +0 -1
- package/dist/graphql-federation/dist/index.js.map +0 -1
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/integrations/binding.d.ts.map +0 -1
- package/dist/integrations/connection.d.ts.map +0 -1
- package/dist/integrations/contracts.d.ts.map +0 -1
- package/dist/integrations/contracts.js.map +0 -1
- package/dist/integrations/health.d.ts.map +0 -1
- package/dist/integrations/health.js.map +0 -1
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/accounts.js.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.js.map +0 -1
- package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/index.js.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.js.map +0 -1
- package/dist/integrations/openbanking/guards.d.ts.map +0 -1
- package/dist/integrations/openbanking/guards.js.map +0 -1
- package/dist/integrations/openbanking/models.d.ts.map +0 -1
- package/dist/integrations/openbanking/models.js.map +0 -1
- package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
- package/dist/integrations/openbanking/telemetry.js.map +0 -1
- package/dist/integrations/providers/calendar.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.js.map +0 -1
- package/dist/integrations/providers/email.d.ts.map +0 -1
- package/dist/integrations/providers/embedding.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.js.map +0 -1
- package/dist/integrations/providers/gmail.d.ts.map +0 -1
- package/dist/integrations/providers/gmail.js.map +0 -1
- package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/google-calendar.js.map +0 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +0 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +0 -1
- package/dist/integrations/providers/impls/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gcs-storage.js.map +0 -1
- package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gmail-inbound.js.map +0 -1
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gmail-outbound.js.map +0 -1
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/impls/google-calendar.js.map +0 -1
- package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +0 -1
- package/dist/integrations/providers/impls/mistral-embedding.js.map +0 -1
- package/dist/integrations/providers/impls/mistral-llm.d.ts.map +0 -1
- package/dist/integrations/providers/impls/mistral-llm.js.map +0 -1
- package/dist/integrations/providers/impls/postmark-email.d.ts.map +0 -1
- package/dist/integrations/providers/impls/postmark-email.js.map +0 -1
- package/dist/integrations/providers/impls/powens-client.d.ts.map +0 -1
- package/dist/integrations/providers/impls/powens-client.js.map +0 -1
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/impls/powens-openbanking.js.map +0 -1
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +0 -1
- package/dist/integrations/providers/impls/provider-factory.js.map +0 -1
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +0 -1
- package/dist/integrations/providers/impls/qdrant-vector.js.map +0 -1
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +0 -1
- package/dist/integrations/providers/impls/stripe-payments.js.map +0 -1
- package/dist/integrations/providers/impls/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/impls/twilio-sms.js.map +0 -1
- package/dist/integrations/providers/llm.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.js.map +0 -1
- package/dist/integrations/providers/openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/payments.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.js.map +0 -1
- package/dist/integrations/providers/powens.d.ts.map +0 -1
- package/dist/integrations/providers/powens.js.map +0 -1
- package/dist/integrations/providers/qdrant.d.ts.map +0 -1
- package/dist/integrations/providers/qdrant.js.map +0 -1
- package/dist/integrations/providers/sms.d.ts.map +0 -1
- package/dist/integrations/providers/storage.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.js.map +0 -1
- package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/twilio-sms.js.map +0 -1
- package/dist/integrations/providers/vector-store.d.ts.map +0 -1
- package/dist/integrations/providers/voice.d.ts.map +0 -1
- package/dist/integrations/runtime.d.ts.map +0 -1
- package/dist/integrations/runtime.js.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.js.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.js.map +0 -1
- package/dist/integrations/secrets/manager.d.ts.map +0 -1
- package/dist/integrations/secrets/manager.js.map +0 -1
- package/dist/integrations/secrets/provider.d.ts.map +0 -1
- package/dist/integrations/secrets/provider.js.map +0 -1
- package/dist/integrations/spec.d.ts.map +0 -1
- package/dist/integrations/spec.js.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.js.map +0 -1
- package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
- package/dist/jobs/gcp-pubsub.js.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.js.map +0 -1
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/storage-document-handler.js.map +0 -1
- package/dist/jobs/memory-queue.d.ts.map +0 -1
- package/dist/jobs/memory-queue.js.map +0 -1
- package/dist/jobs/queue.d.ts.map +0 -1
- package/dist/jsonschema.d.ts.map +0 -1
- package/dist/jsonschema.js.map +0 -1
- package/dist/knowledge/binding.d.ts.map +0 -1
- package/dist/knowledge/contracts.d.ts.map +0 -1
- package/dist/knowledge/contracts.js.map +0 -1
- package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
- package/dist/knowledge/ingestion/document-processor.js.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.js.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.js.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.js.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.js.map +0 -1
- package/dist/knowledge/query/service.d.ts.map +0 -1
- package/dist/knowledge/query/service.js.map +0 -1
- package/dist/knowledge/runtime.d.ts.map +0 -1
- package/dist/knowledge/runtime.js.map +0 -1
- package/dist/knowledge/source.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.js.map +0 -1
- package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-docs.js.map +0 -1
- package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-overview.js.map +0 -1
- package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
- package/dist/knowledge/spaces/product-canon.js.map +0 -1
- package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
- package/dist/knowledge/spaces/support-faq.js.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.js.map +0 -1
- package/dist/knowledge/spec.d.ts.map +0 -1
- package/dist/knowledge/spec.js.map +0 -1
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js.map +0 -1
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js.map +0 -1
- package/dist/onboarding-base.d.ts.map +0 -1
- package/dist/onboarding-base.js.map +0 -1
- package/dist/ownership.d.ts.map +0 -1
- package/dist/ownership.js.map +0 -1
- package/dist/policy/engine.d.ts.map +0 -1
- package/dist/policy/engine.js.map +0 -1
- package/dist/policy/opa-adapter.d.ts.map +0 -1
- package/dist/policy/opa-adapter.js.map +0 -1
- package/dist/policy/spec.d.ts.map +0 -1
- package/dist/policy/spec.js.map +0 -1
- package/dist/presentations.backcompat.d.ts.map +0 -1
- package/dist/presentations.backcompat.js.map +0 -1
- package/dist/presentations.d.ts.map +0 -1
- package/dist/presentations.js.map +0 -1
- package/dist/presentations.v2.d.ts.map +0 -1
- package/dist/presentations.v2.js.map +0 -1
- package/dist/prompt.d.ts.map +0 -1
- package/dist/prompt.js.map +0 -1
- package/dist/promptRegistry.d.ts.map +0 -1
- package/dist/promptRegistry.js.map +0 -1
- package/dist/regenerator/adapters.d.ts.map +0 -1
- package/dist/regenerator/executor.d.ts.map +0 -1
- package/dist/regenerator/executor.js.map +0 -1
- package/dist/regenerator/service.d.ts.map +0 -1
- package/dist/regenerator/service.js.map +0 -1
- package/dist/regenerator/sinks.d.ts.map +0 -1
- package/dist/regenerator/sinks.js.map +0 -1
- package/dist/regenerator/types.d.ts.map +0 -1
- package/dist/regenerator/utils.d.ts.map +0 -1
- package/dist/regenerator/utils.js.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js.map +0 -1
- package/dist/resources.d.ts.map +0 -1
- package/dist/resources.js.map +0 -1
- package/dist/schema/dist/FieldType.js.map +0 -1
- package/dist/schema/dist/ScalarTypeEnum.js.map +0 -1
- package/dist/schema/dist/SchemaModel.js.map +0 -1
- package/dist/server/graphql-pothos.d.ts.map +0 -1
- package/dist/server/graphql-pothos.js.map +0 -1
- package/dist/server/graphql-schema-export.d.ts.map +0 -1
- package/dist/server/graphql-schema-export.js.map +0 -1
- package/dist/server/provider-mcp.d.ts.map +0 -1
- package/dist/server/provider-mcp.js.map +0 -1
- package/dist/server/rest-elysia.d.ts.map +0 -1
- package/dist/server/rest-elysia.js.map +0 -1
- package/dist/server/rest-express.d.ts.map +0 -1
- package/dist/server/rest-express.js.map +0 -1
- package/dist/server/rest-generic.d.ts.map +0 -1
- package/dist/server/rest-generic.js.map +0 -1
- package/dist/server/rest-next-app.d.ts.map +0 -1
- package/dist/server/rest-next-app.js.map +0 -1
- package/dist/server/rest-next-mcp.d.ts.map +0 -1
- package/dist/server/rest-next-mcp.js.map +0 -1
- package/dist/server/rest-next-pages.d.ts.map +0 -1
- package/dist/server/rest-next-pages.js.map +0 -1
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js.map +0 -1
- package/dist/telemetry/anomaly.d.ts.map +0 -1
- package/dist/telemetry/anomaly.js.map +0 -1
- package/dist/telemetry/spec.d.ts.map +0 -1
- package/dist/telemetry/spec.js.map +0 -1
- package/dist/telemetry/tracker.d.ts.map +0 -1
- package/dist/telemetry/tracker.js.map +0 -1
- package/dist/tests/runner.d.ts.map +0 -1
- package/dist/tests/runner.js.map +0 -1
- package/dist/tests/spec.d.ts.map +0 -1
- package/dist/tests/spec.js.map +0 -1
- package/dist/themes.d.ts.map +0 -1
- package/dist/themes.js.map +0 -1
- package/dist/translations/catalog.d.ts.map +0 -1
- package/dist/translations/tenant.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.js.map +0 -1
- package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/file-adapter.js.map +0 -1
- package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
- package/dist/workflow/adapters/memory-store.js.map +0 -1
- package/dist/workflow/expression.d.ts.map +0 -1
- package/dist/workflow/expression.js.map +0 -1
- package/dist/workflow/runner.d.ts.map +0 -1
- package/dist/workflow/runner.js.map +0 -1
- package/dist/workflow/sla-monitor.d.ts.map +0 -1
- package/dist/workflow/sla-monitor.js.map +0 -1
- package/dist/workflow/spec.d.ts.map +0 -1
- package/dist/workflow/spec.js.map +0 -1
- package/dist/workflow/state.d.ts.map +0 -1
- package/dist/workflow/validation.d.ts.map +0 -1
- package/dist/workflow/validation.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gmail-inbound.js","names":["q: string[]","metadata: Record<string, string>","attachments: NonNullable<EmailMessage['attachments']>"],"sources":["../../../../src/integrations/providers/impls/gmail-inbound.ts"],"sourcesContent":["import { google, type gmail_v1 } from 'googleapis';\n\nimport type {\n EmailInboundProvider,\n EmailMessagesSinceQuery,\n EmailMessage,\n EmailThread,\n EmailThreadListQuery,\n} from '../email';\n\nexport interface GmailInboundProviderOptions {\n auth: gmail_v1.Options['auth'];\n userId?: string;\n gmail?: gmail_v1.Gmail;\n includeSpamTrash?: boolean;\n}\n\nexport class GmailInboundProvider implements EmailInboundProvider {\n private readonly gmail: gmail_v1.Gmail;\n private readonly userId: string;\n private readonly includeSpamTrash: boolean;\n private readonly auth: gmail_v1.Options['auth'];\n\n constructor(options: GmailInboundProviderOptions) {\n this.auth = options.auth;\n this.gmail =\n options.gmail ??\n google.gmail({\n version: 'v1',\n auth: options.auth,\n });\n this.userId = options.userId ?? 'me';\n this.includeSpamTrash = options.includeSpamTrash ?? false;\n }\n\n async listThreads(query?: EmailThreadListQuery): Promise<EmailThread[]> {\n const response = await this.gmail.users.threads.list({\n userId: this.userId,\n maxResults: query?.pageSize,\n pageToken: query?.pageToken,\n q: query?.query,\n labelIds: query?.label ? [query.label] : undefined,\n includeSpamTrash: this.includeSpamTrash,\n auth: this.auth,\n });\n\n const threads = await Promise.all(\n (response.data.threads ?? []).map(async (thread) => {\n if (!thread.id) return null;\n return this.getThread(thread.id);\n })\n );\n\n return threads.filter((thread): thread is EmailThread => thread !== null);\n }\n\n async getThread(threadId: string): Promise<EmailThread | null> {\n const response = await this.gmail.users.threads.get({\n id: threadId,\n userId: this.userId,\n format: 'full',\n auth: this.auth,\n });\n const thread = response.data;\n if (!thread) return null;\n\n const messages =\n thread.messages?.map((message) => this.transformMessage(message)) ?? [];\n\n const participants = dedupeAddresses(\n messages.flatMap((message) => [\n message.from,\n ...message.to,\n ...(message.cc ?? []),\n ])\n );\n\n const firstMessage = messages[0];\n const lastMessage = messages[messages.length - 1];\n const updatedAt =\n lastMessage?.receivedAt ??\n lastMessage?.sentAt ??\n firstMessage?.receivedAt ??\n firstMessage?.sentAt ??\n new Date();\n\n const labels = Array.from(\n new Set(\n messages\n .flatMap((message) => {\n const labelField = message.metadata?.labelIds;\n if (!labelField) return [];\n return labelField.split(',').map((label) => label.trim());\n })\n .filter((label): label is string => Boolean(label))\n )\n );\n\n return {\n id: thread.id ?? threadId,\n subject: messages[0]?.subject,\n snippet: thread.snippet ?? '',\n participants,\n messages,\n updatedAt,\n labels,\n metadata: thread.historyId ? { historyId: thread.historyId } : undefined,\n };\n }\n\n async listMessagesSince(query: EmailMessagesSinceQuery) {\n const after = query.since\n ? Math.floor(query.since.getTime() / 1000)\n : undefined;\n const q: string[] = [];\n if (after) {\n q.push(`after:${after}`);\n }\n const response = await this.gmail.users.messages.list({\n userId: this.userId,\n maxResults: query.pageSize,\n pageToken: query.pageToken,\n labelIds: query.label ? [query.label] : undefined,\n q: q.join(' '),\n includeSpamTrash: this.includeSpamTrash,\n auth: this.auth,\n });\n\n const messages = await Promise.all(\n (response.data.messages ?? []).map(async (item) => {\n if (!item.id) return null;\n const full = await this.gmail.users.messages.get({\n userId: this.userId,\n id: item.id,\n format: 'full',\n auth: this.auth,\n });\n if (!full.data) return null;\n return this.transformMessage(full.data);\n })\n );\n\n return {\n messages: messages.filter(\n (message): message is EmailMessage => message !== null\n ),\n nextPageToken: response.data.nextPageToken ?? undefined,\n };\n }\n\n private transformMessage(message: gmail_v1.Schema$Message): EmailMessage {\n const headers = message.payload?.headers ?? [];\n const subject = headerValue(headers, 'Subject') ?? '';\n const from =\n parseAddress(headerValue(headers, 'From')) ??\n inferFallbackAddress('from', message.id);\n const to = parseAddressList(headerValue(headers, 'To'));\n const cc = parseAddressList(headerValue(headers, 'Cc'));\n const bcc = parseAddressList(headerValue(headers, 'Bcc'));\n const replyTo = parseAddress(headerValue(headers, 'Reply-To'));\n\n const { text, html, attachments } = extractContent(message.payload);\n const timestamp = message.internalDate\n ? new Date(Number(message.internalDate))\n : new Date();\n\n const metadata: Record<string, string> = {\n ...(message.labelIds?.length\n ? { labelIds: message.labelIds.join(',') }\n : {}),\n ...(message.historyId ? { historyId: message.historyId } : {}),\n };\n\n return {\n id: message.id ?? '',\n threadId: message.threadId ?? '',\n subject,\n from,\n to,\n cc,\n bcc,\n replyTo: replyTo ?? undefined,\n sentAt: timestamp,\n receivedAt: timestamp,\n textBody: text ?? undefined,\n htmlBody: html ?? undefined,\n attachments,\n headers: Object.fromEntries(\n headers.map((header) => [header.name ?? '', header.value ?? ''])\n ),\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n }\n}\n\nfunction headerValue(\n headers: gmail_v1.Schema$MessagePartHeader[],\n name: string\n): string | undefined {\n const header = headers.find(\n (candidate) => candidate.name?.toLowerCase() === name.toLowerCase()\n );\n const value = header?.value;\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction parseAddress(\n header?: string\n): { email: string; name?: string } | null {\n const addresses = parseAddressList(header);\n if (addresses.length === 0) {\n return null;\n }\n return addresses[0]!;\n}\n\nfunction inferFallbackAddress(\n field: string,\n messageId?: string | null\n): { email: string; name?: string } {\n const suffix = messageId\n ? messageId.replace(/[^\\w]/g, '').slice(-8) || 'unknown'\n : 'unknown';\n return {\n email: `${field}-${suffix}@mail.local`,\n };\n}\n\nfunction parseAddressList(header?: string): { email: string; name?: string }[] {\n if (!header) return [];\n return header\n .split(',')\n .map((part) => part.trim())\n .filter(Boolean)\n .map((value) => {\n const match = value.match(/^(?:\"?([^\"]*)\"?\\s)?<?([^<>]+)>?$/);\n if (!match) {\n return { email: value };\n }\n const name = match[1]?.trim();\n const email = match[2]?.trim();\n if (!email) {\n return { email: value };\n }\n return name ? { email, name } : { email };\n });\n}\n\nfunction dedupeAddresses(\n addresses: (\n | ReturnType<typeof parseAddress>\n | { email: string; name?: string }\n )[]\n) {\n const map = new Map<string, { email: string; name?: string }>();\n for (const address of addresses) {\n if (!address) continue;\n map.set(address.email.toLowerCase(), address);\n }\n return Array.from(map.values());\n}\n\nfunction extractContent(payload?: gmail_v1.Schema$MessagePart): {\n text?: string;\n html?: string;\n attachments: EmailMessage['attachments'];\n} {\n if (!payload) {\n return { attachments: [] };\n }\n const attachments: NonNullable<EmailMessage['attachments']> = [];\n const visit = (\n part?: gmail_v1.Schema$MessagePart\n ): {\n text?: string;\n html?: string;\n } => {\n if (!part) return {};\n if (part.filename && part.body?.attachmentId) {\n attachments.push({\n id: part.body.attachmentId,\n filename: part.filename,\n contentType: part.mimeType ?? 'application/octet-stream',\n sizeBytes: part.body.size ?? undefined,\n });\n }\n const mimeType = part.mimeType ?? '';\n const data = part.body?.data;\n if (mimeType === 'text/plain' && data) {\n return { text: decodeBase64Url(data) };\n }\n if (mimeType === 'text/html' && data) {\n return { html: decodeBase64Url(data) };\n }\n if (part.parts?.length) {\n return part.parts.reduce<{ text?: string; html?: string }>(\n (acc, nested) => {\n const value = visit(nested);\n return {\n text: value.text ?? acc.text,\n html: value.html ?? acc.html,\n };\n },\n {}\n );\n }\n return {};\n };\n\n const { text, html } = visit(payload);\n return { text, html, attachments };\n}\n\nfunction decodeBase64Url(data: string): string {\n const normalized = data.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4;\n const padded =\n padding === 0 ? normalized : normalized + '='.repeat(4 - padding);\n return Buffer.from(padded, 'base64').toString('utf-8');\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gmail-outbound.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/gmail-outbound.ts"],"sourcesContent":[],"mappings":";;;;UASiB,4BAAA;QACT,QAAA,CAAS;EADA,MAAA,CAAA,EAAA,MAAA;EAMJ,KAAA,CAAA,EAHH,QAAA,CAAS,KAGN;;AAgBc,cAhBd,qBAAA,YAAiC,qBAgBnB,CAAA;EAA+B,iBAAA,KAAA;EAAR,iBAAA,MAAA;EAhBJ,iBAAA,IAAA;EAAqB,WAAA,CAAA,OAAA,EAK5C,4BAL4C;qBAgBxC,uBAAuB,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gmail-outbound.js","names":["headers: string[]"],"sources":["../../../../src/integrations/providers/impls/gmail-outbound.ts"],"sourcesContent":["import { google, type gmail_v1 } from 'googleapis';\n\nimport type {\n EmailAttachment,\n EmailOutboundMessage,\n EmailOutboundProvider,\n EmailOutboundResult,\n} from '../email';\n\nexport interface GmailOutboundProviderOptions {\n auth: gmail_v1.Options['auth'];\n userId?: string;\n gmail?: gmail_v1.Gmail;\n}\n\nexport class GmailOutboundProvider implements EmailOutboundProvider {\n private readonly gmail: gmail_v1.Gmail;\n private readonly userId: string;\n private readonly auth: gmail_v1.Options['auth'];\n\n constructor(options: GmailOutboundProviderOptions) {\n this.auth = options.auth;\n this.gmail =\n options.gmail ??\n google.gmail({\n version: 'v1',\n auth: options.auth,\n });\n this.userId = options.userId ?? 'me';\n }\n\n async sendEmail(message: EmailOutboundMessage): Promise<EmailOutboundResult> {\n const raw = encodeMessage(message);\n const response = await this.gmail.users.messages.send({\n userId: this.userId,\n requestBody: {\n raw,\n },\n auth: this.auth,\n });\n\n const id = response.data.id ?? '';\n return {\n id,\n providerMessageId: response.data.id ?? undefined,\n queuedAt: new Date(),\n };\n }\n}\n\nfunction encodeMessage(message: EmailOutboundMessage): string {\n const headers: string[] = [\n `From: ${formatAddress(message.from)}`,\n `To: ${message.to.map(formatAddress).join(', ')}`,\n `Subject: ${message.subject}`,\n 'MIME-Version: 1.0',\n ];\n if (message.cc?.length) {\n headers.push(`Cc: ${message.cc.map(formatAddress).join(', ')}`);\n }\n if (message.replyTo) {\n headers.push(`Reply-To: ${formatAddress(message.replyTo)}`);\n }\n Object.entries(message.headers ?? {}).forEach(([key, value]) => {\n headers.push(`${key}: ${value}`);\n });\n\n const attachments = message.attachments ?? [];\n const hasHtml = Boolean(message.htmlBody);\n const hasText = Boolean(message.textBody);\n const boundaryMain = `mixed_${Date.now()}`;\n const boundaryAlt = `alt_${Date.now()}`;\n\n let body = '';\n if (attachments.length > 0) {\n headers.push(`Content-Type: multipart/mixed; boundary=\"${boundaryMain}\"`);\n body += `\\r\\n--${boundaryMain}\\r\\n`;\n body += buildAlternativePart(hasText, hasHtml, boundaryAlt, message);\n attachments.forEach((attachment) => {\n body += buildAttachmentPart(boundaryMain, attachment);\n });\n body += `\\r\\n--${boundaryMain}--`;\n } else if (hasText && hasHtml) {\n headers.push(\n `Content-Type: multipart/alternative; boundary=\"${boundaryAlt}\"`\n );\n body += `\\r\\n--${boundaryAlt}\\r\\n`;\n body += buildTextPart('text/plain; charset=\"utf-8\"', message.textBody!);\n body += `\\r\\n--${boundaryAlt}\\r\\n`;\n body += buildTextPart('text/html; charset=\"utf-8\"', message.htmlBody!);\n body += `\\r\\n--${boundaryAlt}--`;\n } else if (hasHtml) {\n headers.push('Content-Type: text/html; charset=\"utf-8\"');\n body += `\\r\\n\\r\\n${message.htmlBody}`;\n } else {\n headers.push('Content-Type: text/plain; charset=\"utf-8\"');\n body += `\\r\\n\\r\\n${message.textBody ?? ''}`;\n }\n\n const mime = `${headers.join('\\r\\n')}${body}`;\n return Buffer.from(mime)\n .toString('base64')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\nfunction buildAlternativePart(\n hasText: boolean,\n hasHtml: boolean,\n boundary: string,\n message: EmailOutboundMessage\n) {\n let content = '';\n content += `Content-Type: multipart/alternative; boundary=\"${boundary}\"\\r\\n`;\n content += '\\r\\n';\n if (hasText) {\n content += `--${boundary}\\r\\n`;\n content += buildTextPart('text/plain; charset=\"utf-8\"', message.textBody!);\n }\n if (hasHtml) {\n content += `\\r\\n--${boundary}\\r\\n`;\n content += buildTextPart('text/html; charset=\"utf-8\"', message.htmlBody!);\n }\n content += `\\r\\n--${boundary}--`;\n return content;\n}\n\nfunction buildTextPart(contentType: string, content: string) {\n return (\n `Content-Type: ${contentType}\\r\\n` +\n 'Content-Transfer-Encoding: 7bit\\r\\n\\r\\n' +\n content\n );\n}\n\nfunction buildAttachmentPart(\n boundary: string,\n attachment: EmailAttachment\n): string {\n const data = attachment.data ?? new Uint8Array();\n const encoded =\n data.byteLength > 0 ? Buffer.from(data).toString('base64') : '';\n return (\n `\\r\\n--${boundary}\\r\\n` +\n `Content-Type: ${attachment.contentType}; name=\"${attachment.filename}\"\\r\\n` +\n 'Content-Transfer-Encoding: base64\\r\\n' +\n `Content-Disposition: attachment; filename=\"${attachment.filename}\"\\r\\n\\r\\n` +\n encoded\n );\n}\n\nfunction formatAddress(address: { email: string; name?: string }) {\n if (address.name) {\n return `\"${address.name}\" <${address.email}>`;\n }\n return address.email;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-calendar.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/google-calendar.ts"],"sourcesContent":[],"mappings":";;;;UAWiB,6BAAA;QACT,WAAA,CAAY;EADH,QAAA,CAAA,EAEJ,WAAA,CAAY,QAFR;EAMJ,UAAA,CAAA,EAAA,MAAA;;AAiBF,cAjBE,sBAAA,YAAkC,gBAiBpC,CAAA;EACE,iBAAA,QAAA;EAAR,iBAAA,iBAAA;EAuBsB,iBAAA,IAAA;EAA6B,WAAA,CAAA,OAAA,EApCjC,6BAoCiC;EAAR,UAAA,CAAA,KAAA,EAxBrC,uBAwBqC,CAAA,EAvB3C,OAuB2C,CAvBnC,wBAuBmC,CAAA;EAcrC,WAAA,CAAA,KAAA,EAdgB,kBAchB,CAAA,EAdqC,OAcrC,CAd6C,aAc7C,CAAA;EACE,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EADF,wBACE,CAAA,EAAR,OAAQ,CAAA,aAAA,CAAA;EAAR,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAWqD,OAXrD,CAAA,IAAA,CAAA;EAWqD,QAAA,eAAA;EAnEX,QAAA,aAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-calendar.js","names":["event: calendar_v3.Schema$Event","metadata: Record<string, string>"],"sources":["../../../../src/integrations/providers/impls/google-calendar.ts"],"sourcesContent":["import { google, type calendar_v3 } from 'googleapis';\n\nimport type {\n CalendarEvent,\n CalendarEventInput,\n CalendarEventUpdateInput,\n CalendarListEventsQuery,\n CalendarListEventsResult,\n CalendarProvider,\n} from '../calendar';\n\nexport interface GoogleCalendarProviderOptions {\n auth: calendar_v3.Options['auth'];\n calendar?: calendar_v3.Calendar;\n calendarId?: string;\n}\n\nexport class GoogleCalendarProvider implements CalendarProvider {\n private readonly calendar: calendar_v3.Calendar;\n private readonly defaultCalendarId: string;\n private readonly auth: calendar_v3.Options['auth'];\n\n constructor(options: GoogleCalendarProviderOptions) {\n this.auth = options.auth;\n this.calendar =\n options.calendar ??\n google.calendar({\n version: 'v3',\n auth: options.auth,\n });\n this.defaultCalendarId = options.calendarId ?? 'primary';\n }\n\n async listEvents(\n query: CalendarListEventsQuery\n ): Promise<CalendarListEventsResult> {\n const response = await this.calendar.events.list({\n calendarId: query.calendarId ?? this.defaultCalendarId,\n timeMin: query.timeMin?.toISOString(),\n timeMax: query.timeMax?.toISOString(),\n maxResults: query.maxResults,\n pageToken: query.pageToken,\n singleEvents: true,\n orderBy: 'startTime',\n auth: this.auth,\n });\n\n const events =\n response.data.items?.map((item) =>\n this.fromGoogleEvent(query.calendarId ?? this.defaultCalendarId, item)\n ) ?? [];\n\n return {\n events,\n nextPageToken: response.data.nextPageToken ?? undefined,\n };\n }\n\n async createEvent(input: CalendarEventInput): Promise<CalendarEvent> {\n const calendarId = input.calendarId ?? this.defaultCalendarId;\n const response = await this.calendar.events.insert({\n calendarId,\n requestBody: this.toGoogleEvent(input),\n conferenceDataVersion: input.conference?.create ? 1 : undefined,\n auth: this.auth,\n });\n return this.fromGoogleEvent(calendarId, response.data);\n }\n\n async updateEvent(\n calendarId: string,\n eventId: string,\n input: CalendarEventUpdateInput\n ): Promise<CalendarEvent> {\n const response = await this.calendar.events.patch({\n calendarId: calendarId ?? this.defaultCalendarId,\n eventId,\n requestBody: this.toGoogleEvent(input),\n conferenceDataVersion: input.conference?.create ? 1 : undefined,\n auth: this.auth,\n });\n return this.fromGoogleEvent(calendarId, response.data);\n }\n\n async deleteEvent(calendarId: string, eventId: string): Promise<void> {\n await this.calendar.events.delete({\n calendarId: calendarId ?? this.defaultCalendarId,\n eventId,\n auth: this.auth,\n });\n }\n\n private fromGoogleEvent(\n calendarId: string,\n event: calendar_v3.Schema$Event\n ): CalendarEvent {\n const start = parseDateTime(event.start);\n const end = parseDateTime(event.end);\n const attendees =\n event.attendees?.map((attendee) => ({\n email: attendee.email ?? '',\n name: attendee.displayName ?? undefined,\n optional: attendee.optional ?? undefined,\n responseStatus: normalizeResponseStatus(attendee.responseStatus),\n })) ?? [];\n const reminders =\n event.reminders?.overrides?.map((reminder) => ({\n method: (reminder.method as 'email' | 'popup') ?? 'popup',\n minutesBeforeStart: reminder.minutes ?? 0,\n })) ?? [];\n const metadata = buildMetadata(event);\n return {\n id: event.id ?? '',\n calendarId,\n title: event.summary ?? '',\n description: event.description ?? undefined,\n location: event.location ?? undefined,\n start,\n end,\n allDay: event.start?.date ? true : undefined,\n attendees,\n reminders,\n conferenceLink:\n event.hangoutLink ??\n event.conferenceData?.entryPoints?.find((entry) => entry.uri)?.uri ??\n undefined,\n metadata,\n createdAt: event.created ? new Date(event.created) : undefined,\n updatedAt: event.updated ? new Date(event.updated) : undefined,\n };\n }\n\n private toGoogleEvent(\n input: CalendarEventInput | CalendarEventUpdateInput\n ): calendar_v3.Schema$Event {\n const event: calendar_v3.Schema$Event = {};\n if ('title' in input && input.title) event.summary = input.title;\n if (input.description !== undefined) event.description = input.description;\n if (input.location !== undefined) event.location = input.location;\n if (input.start) {\n event.start = formatDateTime(input.start, input.allDay);\n }\n if (input.end) {\n event.end = formatDateTime(input.end, input.allDay);\n }\n if (input.attendees) {\n event.attendees = input.attendees.map((attendee) => ({\n email: attendee.email,\n displayName: attendee.name,\n optional: attendee.optional,\n responseStatus: attendee.responseStatus,\n }));\n }\n if (input.reminders) {\n event.reminders = {\n useDefault: false,\n overrides: input.reminders.map((reminder) => ({\n method: reminder.method,\n minutes: reminder.minutesBeforeStart,\n })),\n };\n }\n if (input.conference?.create) {\n event.conferenceData = {\n createRequest: {\n requestId: `conf-${Date.now()}`,\n },\n };\n }\n if (input.metadata) {\n event.extendedProperties = {\n ...(event.extendedProperties ?? {}),\n private: {\n ...(event.extendedProperties?.private ?? {}),\n ...input.metadata,\n },\n };\n }\n return event;\n }\n}\n\nfunction parseDateTime(time?: calendar_v3.Schema$EventDateTime | null): Date {\n if (!time) return new Date();\n if (time.dateTime) return new Date(time.dateTime);\n if (time.date) return new Date(`${time.date}T00:00:00`);\n return new Date();\n}\n\nfunction formatDateTime(\n date: Date,\n allDay?: boolean\n): calendar_v3.Schema$EventDateTime {\n if (allDay) {\n return { date: date.toISOString().slice(0, 10) };\n }\n return { dateTime: date.toISOString() };\n}\n\ntype CalendarResponseStatus =\n | 'needsAction'\n | 'declined'\n | 'tentative'\n | 'accepted';\n\nfunction normalizeResponseStatus(\n status?: string | null\n): CalendarResponseStatus | undefined {\n if (!status) return undefined;\n const allowed: CalendarResponseStatus[] = [\n 'needsAction',\n 'declined',\n 'tentative',\n 'accepted',\n ];\n return allowed.includes(status as CalendarResponseStatus)\n ? (status as CalendarResponseStatus)\n : undefined;\n}\n\nfunction buildMetadata(\n event: calendar_v3.Schema$Event\n): Record<string, string> | undefined {\n const metadata: Record<string, string> = {};\n if (event.status) metadata.status = event.status;\n if (event.htmlLink) metadata.htmlLink = event.htmlLink;\n if (event.iCalUID) metadata.iCalUID = event.iCalUID;\n if (event.etag) metadata.etag = event.etag;\n if (event.conferenceData?.conferenceSolution?.name) {\n metadata.conferenceSolution = event.conferenceData.conferenceSolution.name;\n }\n if (event.extendedProperties?.private) {\n Object.entries(event.extendedProperties.private).forEach(([key, value]) => {\n if (typeof value === 'string') {\n metadata[`extended.${key}`] = value;\n }\n });\n }\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mistral-embedding.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/mistral-embedding.ts"],"sourcesContent":[],"mappings":";;;;UAQiB,+BAAA;;EAAA,YAAA,CAAA,EAAA,MAAA;EAOJ,SAAA,CAAA,EAAA,MAAA;EAIU,MAAA,CAAA,EAPZ,OAOY;;AAiBV,cArBA,wBAAA,YAAoC,iBAqBpC,CAAA;EAAR,iBAAA,MAAA;EA4BQ,iBAAA,YAAA;EAAR,WAAA,CAAA,OAAA,EA7CkB,+BA6ClB;EAjD4C,cAAA,CAAA,SAAA,EAmBlC,iBAnBkC,EAAA,EAAA,QAAA,EAAA;IAAiB,KAAA,CAAA,EAAA,MAAA;MAqB7D,QAAQ;;;MA4BR,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mistral-embedding.js","names":[],"sources":["../../../../src/integrations/providers/impls/mistral-embedding.ts"],"sourcesContent":["import { Mistral } from '@mistralai/mistralai';\n\nimport type {\n EmbeddingDocument,\n EmbeddingProvider,\n EmbeddingResult,\n} from '../embedding';\n\nexport interface MistralEmbeddingProviderOptions {\n apiKey: string;\n defaultModel?: string;\n serverURL?: string;\n client?: Mistral;\n}\n\nexport class MistralEmbeddingProvider implements EmbeddingProvider {\n private readonly client: Mistral;\n private readonly defaultModel: string;\n\n constructor(options: MistralEmbeddingProviderOptions) {\n if (!options.apiKey) {\n throw new Error('MistralEmbeddingProvider requires an apiKey');\n }\n\n this.client =\n options.client ??\n new Mistral({\n apiKey: options.apiKey,\n serverURL: options.serverURL,\n });\n this.defaultModel = options.defaultModel ?? 'mistral-embed';\n }\n\n async embedDocuments(\n documents: EmbeddingDocument[],\n options?: { model?: string }\n ): Promise<EmbeddingResult[]> {\n if (documents.length === 0) return [];\n const model = options?.model ?? this.defaultModel;\n const response = await this.client.embeddings.create({\n model,\n inputs: documents.map((doc) => doc.text),\n });\n\n return response.data.map((item, index) => ({\n id:\n documents[index]?.id ??\n (item.index != null ? `embedding-${item.index}` : `embedding-${index}`),\n vector: item.embedding ?? [],\n dimensions: item.embedding?.length ?? 0,\n model: response.model,\n metadata: documents[index]?.metadata\n ? Object.fromEntries(\n Object.entries(documents[index]?.metadata ?? {}).map(\n ([key, value]) => [key, String(value)]\n )\n )\n : undefined,\n }));\n }\n\n async embedQuery(\n query: string,\n options?: { model?: string }\n ): Promise<EmbeddingResult> {\n const [result] = await this.embedDocuments(\n [{ id: 'query', text: query }],\n options\n );\n if (!result) {\n throw new Error('Failed to compute embedding for query');\n }\n return result;\n }\n}\n"],"mappings":"+CAeA,IAAa,EAAb,KAAmE,CACjE,OACA,aAEA,YAAY,EAA0C,CACpD,GAAI,CAAC,EAAQ,OACX,MAAU,MAAM,8CAA8C,CAGhE,KAAK,OACH,EAAQ,QACR,IAAI,EAAQ,CACV,OAAQ,EAAQ,OAChB,UAAW,EAAQ,UACpB,CAAC,CACJ,KAAK,aAAe,EAAQ,cAAgB,gBAG9C,MAAM,eACJ,EACA,EAC4B,CAC5B,GAAI,EAAU,SAAW,EAAG,MAAO,EAAE,CACrC,IAAM,EAAQ,GAAS,OAAS,KAAK,aAC/B,EAAW,MAAM,KAAK,OAAO,WAAW,OAAO,CACnD,QACA,OAAQ,EAAU,IAAK,GAAQ,EAAI,KAAK,CACzC,CAAC,CAEF,OAAO,EAAS,KAAK,KAAK,EAAM,KAAW,CACzC,GACE,EAAU,IAAQ,KACjB,EAAK,OAAS,KAAmC,aAAa,IAAzC,aAAa,EAAK,SAC1C,OAAQ,EAAK,WAAa,EAAE,CAC5B,WAAY,EAAK,WAAW,QAAU,EACtC,MAAO,EAAS,MAChB,SAAU,EAAU,IAAQ,SACxB,OAAO,YACL,OAAO,QAAQ,EAAU,IAAQ,UAAY,EAAE,CAAC,CAAC,KAC9C,CAAC,EAAK,KAAW,CAAC,EAAK,OAAO,EAAM,CAAC,CACvC,CACF,CACD,IAAA,GACL,EAAE,CAGL,MAAM,WACJ,EACA,EAC0B,CAC1B,GAAM,CAAC,GAAU,MAAM,KAAK,eAC1B,CAAC,CAAE,GAAI,QAAS,KAAM,EAAO,CAAC,CAC9B,EACD,CACD,GAAI,CAAC,EACH,MAAU,MAAM,wCAAwC,CAE1D,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mistral-llm.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/mistral-llm.ts"],"sourcesContent":[],"mappings":";;;;UAciB,yBAAA;;EAAA,YAAA,CAAA,EAAA,MAAA;EAQJ,SAAA,CAAA,EAAA,MAAA;EAIU,MAAA,CAAA,EARZ,OAQY;EAkBT,eAAA,CAAA,EAAA,MAAA;;AAED,cAxBA,kBAAA,YAA8B,WAwB9B,CAAA;EAAR,iBAAA,MAAA;EAOS,iBAAA,YAAA;EACD,WAAA,CAAA,OAAA,EA5BU,yBA4BV;EACM,IAAA,CAAA,QAAA,EAXL,UAWK,EAAA,EAAA,OAAA,CAAA,EAVN,cAUM,CAAA,EATd,OASc,CATN,WASM,CAAA;EAAd,MAAA,CAAA,QAAA,EAFS,UAET,EAAA,EAAA,OAAA,CAAA,EADQ,cACR,CAAA,EAAA,aAAA,CAAc,cAAd,CAAA;EAsFyB,WAAA,CAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAe,OAAf,CAAA;IAAe,YAAA,EAAA,MAAA;EAvHF,CAAA,CAAA;EAAW,QAAA,gBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mistral-llm.js","names":["aggregatedParts: LLMContentPart[]","aggregatedToolCalls: LLMToolCallPart[]","usage: LLMTokenUsage | undefined","finishReason: string | undefined","message: LLMMessage","request: components.ChatCompletionRequest","parts: LLMContentPart[]"],"sources":["../../../../src/integrations/providers/impls/mistral-llm.ts"],"sourcesContent":["import { Mistral } from '@mistralai/mistralai';\nimport type * as components from '@mistralai/mistralai/models/components/index.js';\n\nimport type {\n LLMChatOptions,\n LLMContentPart,\n LLMMessage,\n LLMProvider,\n LLMResponse,\n LLMStreamChunk,\n LLMToolCallPart,\n LLMTokenUsage,\n} from '../llm';\n\nexport interface MistralLLMProviderOptions {\n apiKey: string;\n defaultModel?: string;\n serverURL?: string;\n client?: Mistral;\n userAgentSuffix?: string;\n}\n\nexport class MistralLLMProvider implements LLMProvider {\n private readonly client: Mistral;\n private readonly defaultModel: string;\n\n constructor(options: MistralLLMProviderOptions) {\n if (!options.apiKey) {\n throw new Error('MistralLLMProvider requires an apiKey');\n }\n\n this.client =\n options.client ??\n new Mistral({\n apiKey: options.apiKey,\n serverURL: options.serverURL,\n userAgent: options.userAgentSuffix\n ? `${options.userAgentSuffix}`\n : undefined,\n });\n this.defaultModel = options.defaultModel ?? 'mistral-large-latest';\n }\n\n async chat(\n messages: LLMMessage[],\n options: LLMChatOptions = {}\n ): Promise<LLMResponse> {\n const request = this.buildChatRequest(messages, options);\n const response = await this.client.chat.complete(request);\n return this.buildLLMResponse(response);\n }\n\n async *stream(\n messages: LLMMessage[],\n options: LLMChatOptions = {}\n ): AsyncIterable<LLMStreamChunk> {\n const request = this.buildChatRequest(messages, options);\n request.stream = true;\n const stream = await this.client.chat.stream(request);\n\n const aggregatedParts: LLMContentPart[] = [];\n const aggregatedToolCalls: LLMToolCallPart[] = [];\n let usage: LLMTokenUsage | undefined;\n let finishReason: string | undefined;\n\n for await (const event of stream) {\n for (const choice of event.data.choices) {\n const delta = choice.delta;\n if (typeof delta.content === 'string') {\n if (delta.content.length > 0) {\n aggregatedParts.push({ type: 'text', text: delta.content });\n yield {\n type: 'message_delta',\n delta: { type: 'text', text: delta.content },\n index: choice.index,\n };\n }\n } else if (Array.isArray(delta.content)) {\n for (const chunk of delta.content) {\n if (chunk.type === 'text' && 'text' in chunk) {\n aggregatedParts.push({ type: 'text', text: chunk.text });\n yield {\n type: 'message_delta',\n delta: { type: 'text', text: chunk.text },\n index: choice.index,\n };\n }\n }\n }\n\n if (delta.toolCalls) {\n let localIndex = 0;\n for (const call of delta.toolCalls) {\n const toolCall = this.fromMistralToolCall(call, localIndex);\n aggregatedToolCalls.push(toolCall);\n yield {\n type: 'tool_call',\n call: toolCall,\n index: choice.index,\n };\n localIndex += 1;\n }\n }\n\n if (choice.finishReason && choice.finishReason !== 'null') {\n finishReason = choice.finishReason;\n }\n }\n\n if (event.data.usage) {\n const usageEntry = this.fromUsage(event.data.usage);\n if (usageEntry) {\n usage = usageEntry;\n yield { type: 'usage', usage: usageEntry };\n }\n }\n }\n\n const message: LLMMessage = {\n role: 'assistant',\n content: aggregatedParts.length\n ? aggregatedParts\n : [{ type: 'text', text: '' }],\n };\n if (aggregatedToolCalls.length > 0) {\n message.content = [\n ...aggregatedToolCalls,\n ...(aggregatedParts.length ? aggregatedParts : []),\n ];\n }\n\n yield {\n type: 'end',\n response: {\n message,\n usage,\n finishReason: mapFinishReason(finishReason),\n },\n };\n }\n\n async countTokens(messages: LLMMessage[]): Promise<{ promptTokens: number }> {\n throw new Error('Mistral API does not currently support token counting');\n }\n\n private buildChatRequest(\n messages: LLMMessage[],\n options: LLMChatOptions\n ): components.ChatCompletionRequest {\n const model = options.model ?? this.defaultModel;\n const mappedMessages = messages.map((message) =>\n this.toMistralMessage(message)\n );\n\n const request: components.ChatCompletionRequest = {\n model,\n messages: mappedMessages,\n };\n\n if (options.temperature != null) {\n request.temperature = options.temperature;\n }\n if (options.topP != null) {\n request.topP = options.topP;\n }\n if (options.maxOutputTokens != null) {\n request.maxTokens = options.maxOutputTokens;\n }\n if (options.stopSequences?.length) {\n request.stop =\n options.stopSequences.length === 1\n ? options.stopSequences[0]\n : options.stopSequences;\n }\n if (options.tools?.length) {\n request.tools = options.tools.map((tool) => ({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters:\n typeof tool.inputSchema === 'object' && tool.inputSchema !== null\n ? tool.inputSchema\n : {},\n },\n }));\n }\n if (options.responseFormat === 'json') {\n request.responseFormat = { type: 'json_object' };\n }\n\n return request;\n }\n\n private buildLLMResponse(\n response: components.ChatCompletionResponse\n ): LLMResponse {\n const firstChoice = response.choices[0];\n if (!firstChoice) {\n return {\n message: {\n role: 'assistant',\n content: [{ type: 'text', text: '' }],\n },\n usage: this.fromUsage(response.usage),\n raw: response,\n };\n }\n const message = this.fromAssistantMessage(firstChoice.message);\n return {\n message,\n usage: this.fromUsage(response.usage),\n finishReason: mapFinishReason(firstChoice.finishReason),\n raw: response,\n };\n }\n\n private fromUsage(\n usage: components.UsageInfo | undefined\n ): LLMTokenUsage | undefined {\n if (!usage) return undefined;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? 0,\n };\n }\n\n private fromAssistantMessage(\n message: components.AssistantMessage\n ): LLMMessage {\n const parts: LLMContentPart[] = [];\n if (typeof message.content === 'string') {\n parts.push({ type: 'text', text: message.content });\n } else if (Array.isArray(message.content)) {\n message.content.forEach((chunk) => {\n if (chunk.type === 'text' && 'text' in chunk) {\n parts.push({ type: 'text', text: chunk.text });\n }\n });\n }\n\n const toolCalls =\n message.toolCalls?.map((call, index) =>\n this.fromMistralToolCall(call, index)\n ) ?? [];\n\n if (toolCalls.length > 0) {\n parts.splice(0, 0, ...toolCalls);\n }\n\n if (parts.length === 0) {\n parts.push({ type: 'text', text: '' });\n }\n\n return {\n role: 'assistant',\n content: parts,\n };\n }\n\n private fromMistralToolCall(\n call: components.ToolCall,\n index: number\n ): LLMToolCallPart {\n const args =\n typeof call.function.arguments === 'string'\n ? call.function.arguments\n : JSON.stringify(call.function.arguments);\n return {\n type: 'tool-call',\n id: call.id ?? `tool-call-${index}`,\n name: call.function.name,\n arguments: args,\n };\n }\n\n private toMistralMessage(message: LLMMessage): components.Messages {\n const textContent = this.extractText(message.content);\n const toolCalls = this.extractToolCalls(message);\n\n switch (message.role) {\n case 'system':\n return {\n role: 'system',\n content: textContent ?? '',\n };\n case 'user':\n return {\n role: 'user',\n content: textContent ?? '',\n };\n case 'assistant':\n return {\n role: 'assistant',\n content: toolCalls.length > 0 ? null : (textContent ?? ''),\n toolCalls: toolCalls.length > 0 ? toolCalls : undefined,\n };\n case 'tool':\n return {\n role: 'tool',\n content: textContent ?? '',\n toolCallId: message.toolCallId ?? toolCalls[0]?.id,\n };\n default:\n return {\n role: 'user',\n content: textContent ?? '',\n };\n }\n }\n\n private extractText(parts: LLMContentPart[]): string | null {\n const textParts = parts\n .filter((part) => part.type === 'text')\n .map((part) => (part as Extract<LLMContentPart, { type: 'text' }>).text);\n if (textParts.length === 0) return null;\n return textParts.join('');\n }\n\n private extractToolCalls(message: LLMMessage): components.ToolCall[] {\n const toolCallParts = message.content.filter(\n (part): part is LLMToolCallPart => part.type === 'tool-call'\n );\n return toolCallParts.map((call, index) => ({\n id: call.id ?? `call_${index}`,\n type: 'function',\n index,\n function: {\n name: call.name,\n arguments: call.arguments,\n },\n }));\n }\n}\n\nfunction mapFinishReason(\n reason?: string | null\n): LLMResponse['finishReason'] | undefined {\n if (!reason) return undefined;\n const normalized = reason.toLowerCase();\n switch (normalized) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_call':\n case 'tool_calls':\n return 'tool_call';\n case 'content_filter':\n return 'content_filter';\n default:\n return undefined;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postmark-email.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/postmark-email.ts"],"sourcesContent":[],"mappings":";;;;UAQiB,4BAAA;;EAAA,gBAAA,CAAA,EAAA,MAAA;EAOJ,aAAA,CAAA,EAAA,MAAA;EAKU,MAAA,CAAA,EARZ,YAQY;;AAUmC,cAf7C,qBAAA,YAAiC,qBAeY,CAAA;EAAR,iBAAA,MAAA;EAfJ,iBAAA,gBAAA;EAAqB,iBAAA,aAAA;uBAK5C;qBAUI,uBAAuB,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postmark-email.js","names":["request: PostmarkModels.Message"],"sources":["../../../../src/integrations/providers/impls/postmark-email.ts"],"sourcesContent":["import { ServerClient, type Models as PostmarkModels } from 'postmark';\n\nimport type {\n EmailOutboundMessage,\n EmailOutboundProvider,\n EmailOutboundResult,\n} from '../email';\n\nexport interface PostmarkEmailProviderOptions {\n serverToken: string;\n defaultFromEmail?: string;\n messageStream?: string;\n client?: ServerClient;\n}\n\nexport class PostmarkEmailProvider implements EmailOutboundProvider {\n private readonly client: ServerClient;\n private readonly defaultFromEmail?: string;\n private readonly messageStream?: string;\n\n constructor(options: PostmarkEmailProviderOptions) {\n this.client =\n options.client ??\n new ServerClient(options.serverToken, {\n useHttps: true,\n });\n this.defaultFromEmail = options.defaultFromEmail;\n this.messageStream = options.messageStream;\n }\n\n async sendEmail(message: EmailOutboundMessage): Promise<EmailOutboundResult> {\n const request: PostmarkModels.Message = {\n From: formatAddress(message.from) ?? this.defaultFromEmail,\n To: message.to.map((addr) => formatAddress(addr)).join(', '),\n Cc:\n message.cc?.map((addr) => formatAddress(addr)).join(', ') || undefined,\n Bcc:\n message.bcc?.map((addr) => formatAddress(addr)).join(', ') || undefined,\n ReplyTo: message.replyTo ? formatAddress(message.replyTo) : undefined,\n Subject: message.subject,\n TextBody: message.textBody,\n HtmlBody: message.htmlBody,\n Headers: message.headers\n ? Object.entries(message.headers).map(([name, value]) => ({\n Name: name,\n Value: value,\n }))\n : undefined,\n MessageStream: this.messageStream,\n Attachments: buildAttachments(message),\n };\n\n const response = await this.client.sendEmail(request);\n return {\n id: response.MessageID,\n providerMessageId: response.MessageID,\n queuedAt: new Date(response.SubmittedAt ?? new Date().toISOString()),\n };\n }\n}\n\nfunction formatAddress(address: { email: string; name?: string }): string {\n if (address.name) {\n return `\"${address.name}\" <${address.email}>`;\n }\n return address.email;\n}\n\nfunction buildAttachments(\n message: EmailOutboundMessage\n): PostmarkModels.Attachment[] | undefined {\n if (!message.attachments?.length) return undefined;\n return message.attachments\n .filter((attachment) => attachment.data)\n .map((attachment) => ({\n Name: attachment.filename,\n Content: Buffer.from(attachment.data ?? new Uint8Array()).toString(\n 'base64'\n ),\n ContentType: attachment.contentType,\n ContentID: null,\n ContentLength: attachment.sizeBytes,\n Disposition: 'attachment',\n }));\n}\n"],"mappings":"wCAeA,IAAa,EAAb,KAAoE,CAClE,OACA,iBACA,cAEA,YAAY,EAAuC,CACjD,KAAK,OACH,EAAQ,QACR,IAAI,EAAa,EAAQ,YAAa,CACpC,SAAU,GACX,CAAC,CACJ,KAAK,iBAAmB,EAAQ,iBAChC,KAAK,cAAgB,EAAQ,cAG/B,MAAM,UAAU,EAA6D,CAC3E,IAAMA,EAAkC,CACtC,KAAM,EAAc,EAAQ,KAAK,EAAI,KAAK,iBAC1C,GAAI,EAAQ,GAAG,IAAK,GAAS,EAAc,EAAK,CAAC,CAAC,KAAK,KAAK,CAC5D,GACE,EAAQ,IAAI,IAAK,GAAS,EAAc,EAAK,CAAC,CAAC,KAAK,KAAK,EAAI,IAAA,GAC/D,IACE,EAAQ,KAAK,IAAK,GAAS,EAAc,EAAK,CAAC,CAAC,KAAK,KAAK,EAAI,IAAA,GAChE,QAAS,EAAQ,QAAU,EAAc,EAAQ,QAAQ,CAAG,IAAA,GAC5D,QAAS,EAAQ,QACjB,SAAU,EAAQ,SAClB,SAAU,EAAQ,SAClB,QAAS,EAAQ,QACb,OAAO,QAAQ,EAAQ,QAAQ,CAAC,KAAK,CAAC,EAAM,MAAY,CACtD,KAAM,EACN,MAAO,EACR,EAAE,CACH,IAAA,GACJ,cAAe,KAAK,cACpB,YAAa,EAAiB,EAAQ,CACvC,CAEK,EAAW,MAAM,KAAK,OAAO,UAAU,EAAQ,CACrD,MAAO,CACL,GAAI,EAAS,UACb,kBAAmB,EAAS,UAC5B,SAAU,IAAI,KAAK,EAAS,aAAe,IAAI,MAAM,CAAC,aAAa,CAAC,CACrE,GAIL,SAAS,EAAc,EAAmD,CAIxE,OAHI,EAAQ,KACH,IAAI,EAAQ,KAAK,KAAK,EAAQ,MAAM,GAEtC,EAAQ,MAGjB,SAAS,EACP,EACyC,CACpC,KAAQ,aAAa,OAC1B,OAAO,EAAQ,YACZ,OAAQ,GAAe,EAAW,KAAK,CACvC,IAAK,IAAgB,CACpB,KAAM,EAAW,SACjB,QAAS,OAAO,KAAK,EAAW,MAAQ,IAAI,WAAa,CAAC,SACxD,SACD,CACD,YAAa,EAAW,YACxB,UAAW,KACX,cAAe,EAAW,UAC1B,YAAa,aACd,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powens-client.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/powens-client.ts"],"sourcesContent":[],"mappings":";KAEY,iBAAA;AAAA,UAOK,mBAAA,CAPY;EAOZ,QAAA,EAAA,MAAA;EA4BA,YAAA,EAAA,MAAa;EAoBb,MAAA,CAAA,EAAA,MAAA;EAQA,WAAA,EApDF,iBAoDmB;EAmBjB,OAAA,CAAA,EAAA,MAAA;EAQA,SAAA,CAAA,EAAA,OA7EI,KA6ES;EASb,gBAAA,CAAA,EAAA,MAAA;EASJ,MAAA,CAAA,EAAA;IAgCA,KAAA,CAAA,EAAA,CAAA,GAAY,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAUF,IAAA,CAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAmBT,KAAA,CAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAR,CAAA;;AAgBmC,UAtJxB,aAAA,CAsJwB;EAc3B,IAAA,EAAA,MAAA;EAAR,SAAA,EAAA,MAAA;EAgB4C,QAAA,EAAA,MAAA;EAAR,WAAA,EAAA;IAS7B,EAAA,EAAA,MAAA;IAAR,IAAA,EAAA,MAAA;IAAO,OAAA,CAAA,EAAA,MAAA;;;;;;;;;;aA5KC;;UAGI,yBAAA;YACL;;;;;;UAOK,iBAAA;;;;;;;;;;;;;;;;aAgBJ;;UAGI,6BAAA;gBACD;;;;;;UAOC,aAAA;;;;;;aAMJ;;UAGI,8BAAA;;;;;;aAMJ;;cAGA,iBAAA,SAA0B,KAAA;;;;;;;cAgC1B,YAAA;;;;;;;;;uBAUU;;;;;;;MAmBjB,QAAQ;mCAgB2B,QAAQ;;;;;;;;MAc3C,QAAQ;oCAgB4B,QAAQ;+CAS7C,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powens-client.js","names":["POWENS_BASE_URL: Record<PowensEnvironment, string>","searchParams: Record<string, string | number | boolean | undefined>","headers: Record<string, string>","requestId: string | undefined","errorBody: unknown","message: string"],"sources":["../../../../src/integrations/providers/impls/powens-client.ts"],"sourcesContent":["import { URL } from 'node:url';\n\nexport type PowensEnvironment = 'sandbox' | 'production';\n\nconst POWENS_BASE_URL: Record<PowensEnvironment, string> = {\n sandbox: 'https://api-sandbox.powens.com/v2',\n production: 'https://api.powens.com/v2',\n};\n\nexport interface PowensClientOptions {\n clientId: string;\n clientSecret: string;\n apiKey?: string;\n environment: PowensEnvironment;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n defaultTimeoutMs?: number;\n logger?: {\n debug?: (...args: unknown[]) => void;\n warn?: (...args: unknown[]) => void;\n error?: (...args: unknown[]) => void;\n };\n}\n\ninterface PowensOAuthTokenResponse {\n access_token: string;\n expires_in: number;\n scope?: string;\n token_type: string;\n}\n\ninterface PowensOAuthToken {\n accessToken: string;\n expiresAt: number;\n scope?: string;\n}\n\nexport interface PowensAccount {\n uuid: string;\n reference: string;\n userUuid: string;\n institution: {\n id: string;\n name: string;\n logoUrl?: string;\n };\n name: string;\n iban?: string;\n bic?: string;\n currency?: string;\n balance?: number;\n availableBalance?: number;\n type?: string;\n status?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PowensAccountListResponse {\n accounts: PowensAccount[];\n pagination?: {\n nextCursor?: string;\n hasMore?: boolean;\n };\n}\n\nexport interface PowensTransaction {\n uuid: string;\n accountUuid: string;\n amount: number;\n currency: string;\n direction: 'credit' | 'debit';\n description?: string;\n category?: string;\n rawLabel?: string;\n bookingDate?: string;\n valueDate?: string;\n status?: string;\n merchantName?: string;\n merchantCategoryCode?: string;\n counterpartyName?: string;\n counterpartyAccount?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PowensTransactionListResponse {\n transactions: PowensTransaction[];\n pagination?: {\n nextCursor?: string;\n hasMore?: boolean;\n };\n}\n\nexport interface PowensBalance {\n accountUuid: string;\n type: string;\n amount: number;\n currency: string;\n updatedAt: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PowensConnectionStatusResponse {\n connectionUuid: string;\n status: 'healthy' | 'error' | 'revoked' | 'pending';\n lastAttemptAt?: string;\n errorCode?: string;\n errorMessage?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport class PowensClientError extends Error {\n readonly status: number;\n readonly code?: string;\n readonly requestId?: string;\n readonly response?: unknown;\n\n constructor(\n message: string,\n status: number,\n code?: string,\n requestId?: string,\n response?: unknown\n ) {\n super(message);\n this.name = 'PowensClientError';\n this.status = status;\n this.code = code;\n this.requestId = requestId;\n this.response = response;\n }\n}\n\ninterface RequestOptions {\n method: string;\n path: string;\n searchParams?: Record<string, string | number | boolean | undefined>;\n body?: Record<string, unknown> | undefined;\n headers?: Record<string, string | undefined>;\n timeoutMs?: number;\n skipAuth?: boolean;\n}\n\nexport class PowensClient {\n private readonly clientId: string;\n private readonly clientSecret: string;\n private readonly apiKey?: string;\n private readonly fetchImpl: typeof fetch;\n private readonly logger?: PowensClientOptions['logger'];\n private readonly defaultTimeoutMs: number;\n private token?: PowensOAuthToken;\n private readonly baseUrl: string;\n\n constructor(options: PowensClientOptions) {\n this.clientId = options.clientId;\n this.clientSecret = options.clientSecret;\n this.apiKey = options.apiKey;\n this.fetchImpl = options.fetchImpl ?? fetch;\n this.logger = options.logger;\n this.defaultTimeoutMs = options.defaultTimeoutMs ?? 15000;\n this.baseUrl =\n options.baseUrl ??\n POWENS_BASE_URL[options.environment] ??\n POWENS_BASE_URL.production;\n }\n\n async listAccounts(params: {\n userUuid: string;\n cursor?: string;\n limit?: number;\n includeBalances?: boolean;\n institutionUuid?: string;\n }): Promise<PowensAccountListResponse> {\n const searchParams: Record<string, string | number | boolean | undefined> =\n {\n cursor: params.cursor,\n limit: params.limit,\n include_balances: params.includeBalances,\n institution_uuid: params.institutionUuid,\n };\n const response = await this.request<PowensAccountListResponse>({\n method: 'GET',\n path: `/users/${encodeURIComponent(params.userUuid)}/accounts`,\n searchParams,\n });\n return response;\n }\n\n async getAccount(accountUuid: string): Promise<PowensAccount> {\n return this.request<PowensAccount>({\n method: 'GET',\n path: `/accounts/${encodeURIComponent(accountUuid)}`,\n });\n }\n\n async listTransactions(params: {\n accountUuid: string;\n cursor?: string;\n limit?: number;\n from?: string;\n to?: string;\n includePending?: boolean;\n }): Promise<PowensTransactionListResponse> {\n const searchParams: Record<string, string | number | boolean | undefined> =\n {\n cursor: params.cursor,\n limit: params.limit,\n from: params.from,\n to: params.to,\n include_pending: params.includePending,\n };\n return this.request<PowensTransactionListResponse>({\n method: 'GET',\n path: `/accounts/${encodeURIComponent(params.accountUuid)}/transactions`,\n searchParams,\n });\n }\n\n async getBalances(accountUuid: string): Promise<PowensBalance[]> {\n return this.request<PowensBalance[]>({\n method: 'GET',\n path: `/accounts/${encodeURIComponent(accountUuid)}/balances`,\n });\n }\n\n async getConnectionStatus(\n connectionUuid: string\n ): Promise<PowensConnectionStatusResponse> {\n return this.request<PowensConnectionStatusResponse>({\n method: 'GET',\n path: `/connections/${encodeURIComponent(connectionUuid)}`,\n });\n }\n\n private async request<T>(options: RequestOptions): Promise<T> {\n const url = new URL(options.path, this.baseUrl);\n if (options.searchParams) {\n for (const [key, value] of Object.entries(options.searchParams)) {\n if (value === undefined || value === null) continue;\n url.searchParams.set(key, String(value));\n }\n }\n\n const headers: Record<string, string> = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...options.headers,\n };\n\n if (this.apiKey) {\n headers['x-api-key'] = this.apiKey;\n }\n\n if (!options.skipAuth) {\n const token = await this.ensureAccessToken();\n headers.Authorization = `Bearer ${token}`;\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n options.timeoutMs ?? this.defaultTimeoutMs\n );\n\n try {\n const response = await this.fetchImpl(url, {\n method: options.method,\n headers,\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n const requestId: string | undefined =\n response.headers.get('x-request-id') ?? undefined;\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n // ignore parsing errors\n }\n const errorObject =\n typeof errorBody === 'object' && errorBody !== null\n ? (errorBody as Record<string, unknown>)\n : undefined;\n const message: string =\n typeof errorObject?.message === 'string'\n ? errorObject.message\n : `Powens API request failed with status ${response.status}`;\n const code =\n typeof errorObject?.code === 'string' ? errorObject.code : undefined;\n throw new PowensClientError(\n message,\n response.status,\n code,\n requestId,\n errorBody\n );\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n try {\n return (await response.json()) as T;\n } catch (error) {\n this.logger?.error?.(\n '[PowensClient] Failed to parse JSON response',\n error\n );\n throw new PowensClientError(\n 'Failed to parse Powens response payload as JSON',\n response.status,\n undefined,\n requestId\n );\n }\n } catch (error) {\n if (error instanceof PowensClientError) {\n throw error;\n }\n if ((error as Error).name === 'AbortError') {\n throw new PowensClientError(\n `Powens API request timed out after ${options.timeoutMs ?? this.defaultTimeoutMs}ms`,\n 408\n );\n }\n this.logger?.error?.('[PowensClient] Request failed', error);\n throw new PowensClientError(\n (error as Error).message ?? 'Powens API request failed',\n 500\n );\n } finally {\n clearTimeout(timeout);\n }\n }\n\n private async ensureAccessToken(): Promise<string> {\n if (this.token && Date.now() < this.token.expiresAt - 5000) {\n return this.token.accessToken;\n }\n this.token = await this.fetchAccessToken();\n return this.token.accessToken;\n }\n\n private async fetchAccessToken(): Promise<PowensOAuthToken> {\n const url = new URL('/oauth/token', this.baseUrl);\n const basicAuth = Buffer.from(\n `${this.clientId}:${this.clientSecret}`,\n 'utf-8'\n ).toString('base64');\n\n const response = await this.fetchImpl(url, {\n method: 'POST',\n headers: {\n Authorization: `Basic ${basicAuth}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: new URLSearchParams({\n grant_type: 'client_credentials',\n }).toString(),\n });\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n // ignore\n }\n const errorObject =\n typeof errorBody === 'object' && errorBody !== null\n ? (errorBody as Record<string, unknown>)\n : undefined;\n const message: string =\n typeof errorObject?.error_description === 'string'\n ? errorObject.error_description\n : 'Failed to obtain Powens access token';\n throw new PowensClientError(\n message,\n response.status,\n undefined,\n undefined,\n errorBody\n );\n }\n\n const payload = (await response.json()) as PowensOAuthTokenResponse;\n const expiresAt = Date.now() + payload.expires_in * 1000;\n this.logger?.debug?.('[PowensClient] Received access token', {\n expiresIn: payload.expires_in,\n });\n return {\n accessToken: payload.access_token,\n expiresAt,\n scope: payload.scope,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powens-openbanking.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/powens-openbanking.ts"],"sourcesContent":[],"mappings":";;;;UAyBiB,gCAAA,SAAyC;AAAzC,cAOJ,yBAAA,YAAqC,mBAP2B,CAAA;EAOhE,iBAAA,MAAA;EAIU,iBAAA,MAAA;EAMX,WAAA,CAAA,OAAA,EANW,gCAMX;EACC,YAAA,CAAA,MAAA,EADD,6BACC,CAAA,EAAR,OAAQ,CAAA,6BAAA,CAAA;EAAR,iBAAA,CAAA,MAAA,EA6BO,kCA7BP,CAAA,EA8BA,OA9BA,CA8BQ,yBA9BR,CAAA;EA6BO,gBAAA,CAAA,MAAA,EAYA,iCAZA,CAAA,EAaP,OAbO,CAaC,iCAbD,CAAA;EACC,WAAA,CAAA,MAAA,EAoCD,4BApCC,CAAA,EAqCR,OArCQ,CAqCA,yBArCA,EAAA,CAAA;EAAR,mBAAA,CAAA,MAAA,EAsDO,oCAtDP,CAAA,EAuDA,OAvDA,CAuDQ,2BAvDR,CAAA;EAWO,QAAA,UAAA;EACC,QAAA,iBAAA;EAAR,QAAA,cAAA;EAwBO,QAAA,UAAA;EACC,QAAA,SAAA;EAAR,QAAA,YAAA;EAiBO,QAAA,gBAAA;EACC,QAAA,oBAAA;EAAR,QAAA,mBAAA;EAhG6C,QAAA,WAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powens-openbanking.js","names":[],"sources":["../../../../src/integrations/providers/impls/powens-openbanking.ts"],"sourcesContent":["import type {\n OpenBankingAccountBalance,\n OpenBankingAccountDetails,\n OpenBankingAccountSummary,\n OpenBankingConnectionStatus,\n OpenBankingGetAccountDetailsParams,\n OpenBankingGetBalancesParams,\n OpenBankingGetConnectionStatusParams,\n OpenBankingListAccountsParams,\n OpenBankingListAccountsResult,\n OpenBankingListTransactionsParams,\n OpenBankingListTransactionsResult,\n OpenBankingProvider,\n OpenBankingTransaction,\n} from '../openbanking';\nimport {\n PowensClient,\n PowensClientError,\n type PowensClientOptions,\n type PowensAccount,\n type PowensTransaction,\n type PowensBalance,\n type PowensConnectionStatusResponse,\n} from './powens-client';\n\nexport interface PowensOpenBankingProviderOptions extends PowensClientOptions {}\n\ninterface ProviderContext {\n tenantId: string;\n connectionId: string;\n}\n\nexport class PowensOpenBankingProvider implements OpenBankingProvider {\n private readonly client: PowensClient;\n private readonly logger?: PowensClientOptions['logger'];\n\n constructor(options: PowensOpenBankingProviderOptions) {\n this.client = new PowensClient(options);\n this.logger = options.logger;\n }\n\n async listAccounts(\n params: OpenBankingListAccountsParams\n ): Promise<OpenBankingListAccountsResult> {\n if (!params.userId) {\n throw new PowensClientError(\n 'Powens account listing requires the upstream userId mapped to Powens user UUID.',\n 400\n );\n }\n const context = this.toContext(params.tenantId, params.connectionId);\n try {\n const response = await this.client.listAccounts({\n userUuid: params.userId,\n cursor: params.cursor,\n limit: params.pageSize,\n includeBalances: params.includeBalances,\n institutionUuid: params.institutionId,\n });\n return {\n accounts: response.accounts.map((account) =>\n this.mapAccount(account, context)\n ),\n nextCursor: response.pagination?.nextCursor,\n hasMore: response.pagination?.hasMore,\n };\n } catch (error) {\n this.handleError('listAccounts', error);\n }\n }\n\n async getAccountDetails(\n params: OpenBankingGetAccountDetailsParams\n ): Promise<OpenBankingAccountDetails> {\n const context = this.toContext(params.tenantId, params.connectionId);\n try {\n const account = await this.client.getAccount(params.accountId);\n return this.mapAccountDetails(account, context);\n } catch (error) {\n this.handleError('getAccountDetails', error);\n }\n }\n\n async listTransactions(\n params: OpenBankingListTransactionsParams\n ): Promise<OpenBankingListTransactionsResult> {\n const context = this.toContext(params.tenantId, params.connectionId);\n try {\n const response = await this.client.listTransactions({\n accountUuid: params.accountId,\n cursor: params.cursor,\n limit: params.pageSize,\n from: params.from,\n to: params.to,\n includePending: params.includePending,\n });\n return {\n transactions: response.transactions.map((transaction) =>\n this.mapTransaction(transaction, context)\n ),\n nextCursor: response.pagination?.nextCursor,\n hasMore: response.pagination?.hasMore,\n };\n } catch (error) {\n this.handleError('listTransactions', error);\n }\n }\n\n async getBalances(\n params: OpenBankingGetBalancesParams\n ): Promise<OpenBankingAccountBalance[]> {\n const context = this.toContext(params.tenantId, params.connectionId);\n try {\n const balances = await this.client.getBalances(params.accountId);\n return balances\n .filter((balance) =>\n params.balanceTypes?.length\n ? params.balanceTypes.includes(balance.type as any)\n : true\n )\n .map((balance) => this.mapBalance(balance, context));\n } catch (error) {\n this.handleError('getBalances', error);\n }\n }\n\n async getConnectionStatus(\n params: OpenBankingGetConnectionStatusParams\n ): Promise<OpenBankingConnectionStatus> {\n try {\n const status = await this.client.getConnectionStatus(params.connectionId);\n return {\n connectionId: params.connectionId,\n tenantId: params.tenantId,\n status: this.mapConnectionStatus(status.status),\n lastCheckedAt: status.lastAttemptAt,\n errorCode: status.errorCode,\n errorMessage: status.errorMessage,\n details: status.metadata,\n };\n } catch (error) {\n this.handleError('getConnectionStatus', error);\n }\n }\n\n private mapAccount(\n account: PowensAccount,\n context: ProviderContext\n ): OpenBankingAccountSummary {\n return {\n id: account.uuid,\n externalId: account.reference ?? account.uuid,\n tenantId: context.tenantId,\n connectionId: context.connectionId,\n userId: account.userUuid,\n displayName: account.name,\n institutionId: account.institution.id,\n institutionName: account.institution.name,\n institutionLogoUrl: account.institution.logoUrl,\n accountType: account.type ?? 'unknown',\n iban: account.iban,\n bic: account.bic,\n currency: account.currency ?? 'EUR',\n accountNumberMasked: account.metadata?.account_number_masked as\n | string\n | undefined,\n ownership: this.mapOwnership(\n account.metadata?.ownership as string | undefined\n ),\n status: this.mapAccountStatus(account.status),\n lastSyncedAt: account.metadata?.last_sync_at as string | undefined,\n metadata: account.metadata,\n };\n }\n\n private mapAccountDetails(\n account: PowensAccount,\n context: ProviderContext\n ): OpenBankingAccountDetails {\n return {\n ...this.mapAccount(account, context),\n productCode: account.metadata?.product_code as string | undefined,\n openedAt: account.metadata?.opened_at as string | undefined,\n closedAt: account.metadata?.closed_at as string | undefined,\n availableBalance: account.availableBalance ?? undefined,\n currentBalance: account.balance ?? undefined,\n creditLimit: account.metadata?.credit_limit as number | undefined,\n customFields: account.metadata,\n };\n }\n\n private mapTransaction(\n transaction: PowensTransaction,\n context: ProviderContext\n ): OpenBankingTransaction {\n return {\n id: transaction.uuid,\n externalId: transaction.uuid,\n tenantId: context.tenantId,\n accountId: transaction.accountUuid,\n connectionId: context.connectionId,\n amount: transaction.amount,\n currency: transaction.currency,\n direction: transaction.direction === 'credit' ? 'credit' : 'debit',\n description: transaction.description ?? transaction.rawLabel,\n bookingDate: transaction.bookingDate,\n valueDate: transaction.valueDate,\n postedAt: transaction.bookingDate,\n category: transaction.category,\n rawCategory: transaction.rawLabel,\n merchantName: transaction.merchantName,\n merchantCategoryCode: transaction.merchantCategoryCode,\n counterpartyName: transaction.counterpartyName,\n counterpartyAccount: transaction.counterpartyAccount,\n reference: transaction.metadata?.reference as string | undefined,\n status: this.mapTransactionStatus(transaction.status),\n metadata: transaction.metadata,\n };\n }\n\n private mapBalance(\n balance: PowensBalance,\n context: ProviderContext\n ): OpenBankingAccountBalance {\n return {\n accountId: balance.accountUuid,\n connectionId: context.connectionId,\n tenantId: context.tenantId,\n type: (balance.type ?? 'current') as OpenBankingAccountBalance['type'],\n currency: balance.currency ?? 'EUR',\n amount: balance.amount,\n lastUpdatedAt: balance.updatedAt,\n metadata: balance.metadata,\n };\n }\n\n private toContext(tenantId: string, connectionId: string): ProviderContext {\n return { tenantId, connectionId };\n }\n\n private mapOwnership(value: string | undefined) {\n switch (value?.toLowerCase()) {\n case 'individual':\n case 'personal':\n return 'individual';\n case 'joint':\n return 'joint';\n case 'business':\n case 'corporate':\n return 'business';\n default:\n return 'unknown';\n }\n }\n\n private mapAccountStatus(status?: string) {\n switch (status?.toLowerCase()) {\n case 'active':\n case 'enabled':\n return 'active';\n case 'disabled':\n case 'inactive':\n return 'inactive';\n case 'closed':\n return 'closed';\n case 'suspended':\n return 'suspended';\n default:\n return 'active';\n }\n }\n\n private mapTransactionStatus(status?: string) {\n switch (status?.toLowerCase()) {\n case 'pending':\n case 'authorised':\n return 'pending';\n case 'booked':\n case 'posted':\n return 'booked';\n case 'cancelled':\n case 'rejected':\n return 'cancelled';\n default:\n return 'booked';\n }\n }\n\n private mapConnectionStatus(\n status: PowensConnectionStatusResponse['status']\n ): OpenBankingConnectionStatus['status'] {\n switch (status) {\n case 'healthy':\n return 'healthy';\n case 'pending':\n return 'degraded';\n case 'error':\n return 'error';\n case 'revoked':\n return 'disconnected';\n default:\n return 'degraded';\n }\n }\n\n private handleError(operation: string, error: unknown): never {\n if (error instanceof PowensClientError) {\n this.logger?.error?.(`[PowensOpenBankingProvider] ${operation} failed`, {\n status: error.status,\n code: error.code,\n requestId: error.requestId,\n message: error.message,\n });\n throw error;\n }\n this.logger?.error?.(\n `[PowensOpenBankingProvider] ${operation} failed with unexpected error`,\n error\n );\n throw error instanceof Error\n ? error\n : new Error(`Powens operation \"${operation}\" failed`);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-factory.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/provider-factory.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;cA0Ba,0BAAA;kCAEA,qBACR,QAAQ;EAHA,2BAAA,CAAA,OAA0B,EAsB1B,kBAtB0B,CAAA,EAuBlC,OAvBkC,CAuB1B,qBAvB0B,CAAA;EAE1B,iBAAA,CAAA,OAAA,EA2CsB,kBA3CtB,CAAA,EA2C2C,OA3C3C,CA2CmD,WA3CnD,CAAA;EACA,yBAAA,CAAA,OAAA,EAmEA,kBAnEA,CAAA,EAoER,OApEQ,CAoEA,mBApEA,CAAA;EAAR,2BAAA,CAAA,OAAA,EAwFQ,kBAxFR,CAAA,EAyFA,OAzFA,CAyFQ,qBAzFR,CAAA;EAmBQ,mBAAA,CAAA,OAAA,EA8FA,kBA9FA,CAAA,EA+FR,OA/FQ,CA+FA,aA/FA,CAAA;EACA,iBAAA,CAAA,OAAA,EAkHsB,kBAlHtB,CAAA,EAkH2C,OAlH3C,CAkHmD,WAlHnD,CAAA;EAAR,uBAAA,CAAA,OAAA,EAsIQ,kBAtIR,CAAA,EAuIA,OAvIA,CAuIQ,iBAvIR,CAAA;EAsB8B,yBAAA,CAAA,OAAA,EAsItB,kBAtIsB,CAAA,EAuI9B,OAvI8B,CAuItB,mBAvIsB,CAAA;EAA6B,QAAA,WAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-factory.js","names":[],"sources":["../../../../src/integrations/providers/impls/provider-factory.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\n\nimport type { IntegrationContext } from '../../runtime';\nimport type { SecretValue } from '../../secrets/provider';\nimport { MistralLLMProvider } from './mistral-llm';\nimport { MistralEmbeddingProvider } from './mistral-embedding';\nimport { QdrantVectorProvider } from './qdrant-vector';\nimport { GoogleCloudStorageProvider } from './gcs-storage';\nimport { StripePaymentsProvider } from './stripe-payments';\nimport { PostmarkEmailProvider } from './postmark-email';\nimport { TwilioSmsProvider } from './twilio-sms';\nimport { ElevenLabsVoiceProvider } from './elevenlabs-voice';\nimport type { PaymentsProvider } from '../payments';\nimport type { EmailOutboundProvider } from '../email';\nimport type { SmsProvider } from '../sms';\nimport type { VectorStoreProvider } from '../vector-store';\nimport type { ObjectStorageProvider } from '../storage';\nimport type { VoiceProvider } from '../voice';\nimport type { LLMProvider } from '../llm';\nimport type { EmbeddingProvider } from '../embedding';\nimport type { OpenBankingProvider } from '../openbanking';\nimport { PowensOpenBankingProvider } from './powens-openbanking';\nimport type { PowensEnvironment } from './powens-client';\n\nconst SECRET_CACHE = new Map<string, Record<string, unknown>>();\n\nexport class IntegrationProviderFactory {\n async createPaymentsProvider(\n context: IntegrationContext\n ): Promise<PaymentsProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'payments.stripe':\n return new StripePaymentsProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Stripe API key is required'\n ),\n });\n default:\n throw new Error(\n `Unsupported payments integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createEmailOutboundProvider(\n context: IntegrationContext\n ): Promise<EmailOutboundProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'email.postmark':\n return new PostmarkEmailProvider({\n serverToken: requireSecret<string>(\n secrets,\n 'serverToken',\n 'Postmark server token is required'\n ),\n defaultFromEmail: (context.config as { fromEmail?: string })\n .fromEmail,\n messageStream: (context.config as { messageStream?: string })\n .messageStream,\n });\n default:\n throw new Error(\n `Unsupported email integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createSmsProvider(context: IntegrationContext): Promise<SmsProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'sms.twilio':\n return new TwilioSmsProvider({\n accountSid: requireSecret<string>(\n secrets,\n 'accountSid',\n 'Twilio account SID is required'\n ),\n authToken: requireSecret<string>(\n secrets,\n 'authToken',\n 'Twilio auth token is required'\n ),\n fromNumber: (context.config as { fromNumber?: string }).fromNumber,\n });\n default:\n throw new Error(\n `Unsupported SMS integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createVectorStoreProvider(\n context: IntegrationContext\n ): Promise<VectorStoreProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'vectordb.qdrant':\n return new QdrantVectorProvider({\n url: requireConfig<string>(\n context,\n 'apiUrl',\n 'Qdrant apiUrl config is required'\n ),\n apiKey: secrets.apiKey as string | undefined,\n });\n default:\n throw new Error(\n `Unsupported vector store integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createObjectStorageProvider(\n context: IntegrationContext\n ): Promise<ObjectStorageProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'storage.s3':\n case 'storage.gcs':\n return new GoogleCloudStorageProvider({\n bucket: requireConfig<string>(\n context,\n 'bucket',\n 'Storage bucket is required'\n ),\n clientOptions:\n secrets.type === 'service_account'\n ? { credentials: secrets as any }\n : undefined,\n });\n default:\n throw new Error(\n `Unsupported storage integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createVoiceProvider(\n context: IntegrationContext\n ): Promise<VoiceProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-voice.elevenlabs':\n return new ElevenLabsVoiceProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'ElevenLabs API key is required'\n ),\n defaultVoiceId: (context.config as { defaultVoiceId?: string })\n .defaultVoiceId,\n });\n default:\n throw new Error(\n `Unsupported voice integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createLlmProvider(context: IntegrationContext): Promise<LLMProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-llm.mistral':\n return new MistralLLMProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Mistral API key is required'\n ),\n defaultModel: (context.config as { model?: string }).model,\n });\n default:\n throw new Error(\n `Unsupported LLM integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createEmbeddingProvider(\n context: IntegrationContext\n ): Promise<EmbeddingProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-llm.mistral':\n return new MistralEmbeddingProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Mistral API key is required'\n ),\n defaultModel: (context.config as { embeddingModel?: string })\n .embeddingModel,\n });\n default:\n throw new Error(\n `Unsupported embeddings integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createOpenBankingProvider(\n context: IntegrationContext\n ): Promise<OpenBankingProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n environment?: string;\n baseUrl?: string;\n region?: string;\n pollingIntervalMs?: number;\n };\n\n switch (context.spec.meta.key) {\n case 'openbanking.powens': {\n const environmentValue = requireConfig<string>(\n context,\n 'environment',\n 'Powens environment (sandbox | production) must be specified in integration config.'\n );\n if (\n environmentValue !== 'sandbox' &&\n environmentValue !== 'production'\n ) {\n throw new Error(\n `Powens environment \"${environmentValue}\" is invalid. Expected \"sandbox\" or \"production\".`\n );\n }\n\n return new PowensOpenBankingProvider({\n clientId: requireSecret<string>(\n secrets,\n 'clientId',\n 'Powens clientId is required'\n ),\n clientSecret: requireSecret<string>(\n secrets,\n 'clientSecret',\n 'Powens clientSecret is required'\n ),\n apiKey: secrets.apiKey as string | undefined,\n environment: environmentValue as PowensEnvironment,\n baseUrl: config?.baseUrl as string | undefined,\n });\n }\n default:\n throw new Error(\n `Unsupported open banking integration: ${context.spec.meta.key}`\n );\n }\n }\n\n private async loadSecrets(\n context: IntegrationContext\n ): Promise<Record<string, unknown>> {\n const cacheKey = context.connection.meta.id;\n if (SECRET_CACHE.has(cacheKey)) {\n return SECRET_CACHE.get(cacheKey)!;\n }\n const secret = await context.secretProvider.getSecret(\n context.secretReference\n );\n const value = parseSecret(secret);\n SECRET_CACHE.set(cacheKey, value);\n return value;\n }\n}\n\nfunction parseSecret(secret: SecretValue): Record<string, unknown> {\n const text = Buffer.from(secret.data).toString('utf-8').trim();\n if (!text) return {};\n try {\n return JSON.parse(text);\n } catch {\n return { apiKey: text };\n }\n}\n\nfunction requireSecret<T>(\n secrets: Record<string, unknown>,\n key: string,\n message: string\n): T {\n const value = secrets[key];\n if (value == null || value === '') {\n throw new Error(message);\n }\n return value as T;\n}\n\nfunction requireConfig<T>(\n context: IntegrationContext,\n key: string,\n message: string\n): T {\n const config = context.config as Record<string, unknown>;\n const value = config?.[key];\n if (value == null) {\n throw new Error(message);\n }\n return value as T;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant-vector.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/qdrant-vector.ts"],"sourcesContent":[],"mappings":";;;;UAUiB,2BAAA;;EAAA,MAAA,CAAA,EAAA,MAAA;EAGN,MAAA,CAAA,EAAA,YAAA;EAGW,yBAAA,CAAA,EAAA,OAAA;EAAL,QAAA,CAAA,EAAA,QAAA,GAAA,QAAA,GAAA,KAAA,GAAA,WAAA;EAAI,YAAA,CAAA,EAAJ,IAAI,CAAC,kBAAD,EAAA,KAAA,GAAA,QAAA,CAAA;AAGrB;AAKuB,cALV,oBAAA,YAAgC,mBAKtB,CAAA;EAYC,iBAAA,MAAA;EAAsB,iBAAA,yBAAA;EA0BxB,iBAAA,QAAA;EAA4B,WAAA,CAAA,OAAA,EAtC3B,2BAsC2B;EAAR,MAAA,CAAA,OAAA,EA1BlB,mBA0BkB,CAAA,EA1BI,OA0BJ,CAAA,IAAA,CAAA;EAqBlB,MAAA,CAAA,KAAA,EArBF,iBAqBE,CAAA,EArBkB,OAqBlB,CArB0B,kBAqB1B,EAAA,CAAA;EAAsB,MAAA,CAAA,OAAA,EAAtB,mBAAsB,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;EAhED,QAAA,gBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant-vector.js","names":[],"sources":["../../../../src/integrations/providers/impls/qdrant-vector.ts"],"sourcesContent":["import { QdrantClient, type QdrantClientParams } from '@qdrant/js-client-rest';\n\nimport type {\n VectorDeleteRequest,\n VectorSearchQuery,\n VectorSearchResult,\n VectorStoreProvider,\n VectorUpsertRequest,\n} from '../vector-store';\n\nexport interface QdrantVectorProviderOptions {\n url: string;\n apiKey?: string;\n client?: QdrantClient;\n createCollectionIfMissing?: boolean;\n distance?: 'Cosine' | 'Euclid' | 'Dot' | 'Manhattan';\n clientParams?: Omit<QdrantClientParams, 'url' | 'apiKey'>;\n}\n\nexport class QdrantVectorProvider implements VectorStoreProvider {\n private readonly client: QdrantClient;\n private readonly createCollectionIfMissing: boolean;\n private readonly distance: 'Cosine' | 'Euclid' | 'Dot' | 'Manhattan';\n\n constructor(options: QdrantVectorProviderOptions) {\n this.client =\n options.client ??\n new QdrantClient({\n url: options.url,\n apiKey: options.apiKey,\n ...options.clientParams,\n });\n this.createCollectionIfMissing = options.createCollectionIfMissing ?? true;\n this.distance = options.distance ?? 'Cosine';\n }\n\n async upsert(request: VectorUpsertRequest): Promise<void> {\n if (request.documents.length === 0) return;\n const vectorSize = request.documents[0]!.vector.length;\n\n if (this.createCollectionIfMissing) {\n await this.ensureCollection(request.collection, vectorSize);\n }\n\n const points = request.documents.map((document) => ({\n id: document.id,\n vector: document.vector,\n payload: {\n ...document.payload,\n ...(document.namespace ? { namespace: document.namespace } : {}),\n ...(document.expiresAt\n ? { expiresAt: document.expiresAt.toISOString() }\n : {}),\n },\n }));\n\n await this.client.upsert(request.collection, {\n wait: true,\n points,\n });\n }\n\n async search(query: VectorSearchQuery): Promise<VectorSearchResult[]> {\n const results = await this.client.search(query.collection, {\n vector: query.vector,\n limit: query.topK,\n filter: query.filter as any,\n score_threshold: query.scoreThreshold,\n with_payload: true,\n with_vector: false,\n });\n\n return results.map((item) => ({\n id: String(item.id),\n score: item.score,\n payload: item.payload ?? undefined,\n namespace:\n typeof item.payload === 'object' && item.payload !== null\n ? (item.payload.namespace as string | undefined)\n : undefined,\n }));\n }\n\n async delete(request: VectorDeleteRequest): Promise<void> {\n await this.client.delete(request.collection, {\n wait: true,\n points: request.ids,\n });\n }\n\n private async ensureCollection(\n collectionName: string,\n vectorSize: number\n ): Promise<void> {\n try {\n await this.client.getCollection(collectionName);\n } catch (error) {\n await this.client.createCollection(collectionName, {\n vectors: {\n size: vectorSize,\n distance: this.distance,\n },\n });\n }\n }\n}\n"],"mappings":"sDAmBA,IAAa,EAAb,KAAiE,CAC/D,OACA,0BACA,SAEA,YAAY,EAAsC,CAChD,KAAK,OACH,EAAQ,QACR,IAAI,EAAa,CACf,IAAK,EAAQ,IACb,OAAQ,EAAQ,OAChB,GAAG,EAAQ,aACZ,CAAC,CACJ,KAAK,0BAA4B,EAAQ,2BAA6B,GACtE,KAAK,SAAW,EAAQ,UAAY,SAGtC,MAAM,OAAO,EAA6C,CACxD,GAAI,EAAQ,UAAU,SAAW,EAAG,OACpC,IAAM,EAAa,EAAQ,UAAU,GAAI,OAAO,OAE5C,KAAK,2BACP,MAAM,KAAK,iBAAiB,EAAQ,WAAY,EAAW,CAG7D,IAAM,EAAS,EAAQ,UAAU,IAAK,IAAc,CAClD,GAAI,EAAS,GACb,OAAQ,EAAS,OACjB,QAAS,CACP,GAAG,EAAS,QACZ,GAAI,EAAS,UAAY,CAAE,UAAW,EAAS,UAAW,CAAG,EAAE,CAC/D,GAAI,EAAS,UACT,CAAE,UAAW,EAAS,UAAU,aAAa,CAAE,CAC/C,EAAE,CACP,CACF,EAAE,CAEH,MAAM,KAAK,OAAO,OAAO,EAAQ,WAAY,CAC3C,KAAM,GACN,SACD,CAAC,CAGJ,MAAM,OAAO,EAAyD,CAUpE,OATgB,MAAM,KAAK,OAAO,OAAO,EAAM,WAAY,CACzD,OAAQ,EAAM,OACd,MAAO,EAAM,KACb,OAAQ,EAAM,OACd,gBAAiB,EAAM,eACvB,aAAc,GACd,YAAa,GACd,CAAC,EAEa,IAAK,IAAU,CAC5B,GAAI,OAAO,EAAK,GAAG,CACnB,MAAO,EAAK,MACZ,QAAS,EAAK,SAAW,IAAA,GACzB,UACE,OAAO,EAAK,SAAY,UAAY,EAAK,UAAY,KAChD,EAAK,QAAQ,UACd,IAAA,GACP,EAAE,CAGL,MAAM,OAAO,EAA6C,CACxD,MAAM,KAAK,OAAO,OAAO,EAAQ,WAAY,CAC3C,KAAM,GACN,OAAQ,EAAQ,IACjB,CAAC,CAGJ,MAAc,iBACZ,EACA,EACe,CACf,GAAI,CACF,MAAM,KAAK,OAAO,cAAc,EAAe,MACjC,CACd,MAAM,KAAK,OAAO,iBAAiB,EAAgB,CACjD,QAAS,CACP,KAAM,EACN,SAAU,KAAK,SAChB,CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stripe-payments.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/stripe-payments.ts"],"sourcesContent":[],"mappings":";;;;UAkBiB,6BAAA;;EAAA,MAAA,CAAA,EAEN,MAFM;AAOjB;AAGuB,cAHV,sBAAA,YAAkC,gBAGxB,CAAA;EAQO,iBAAA,MAAA;EAA8B,WAAA,CAAA,OAAA,EARrC,6BAQqC;EAAR,cAAA,CAAA,KAAA,EAAtB,mBAAsB,CAAA,EAAA,OAAA,CAAQ,eAAR,CAAA;EAUH,WAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAR,OAAQ,CAAA,eAAA,GAAA,IAAA,CAAA;EAAR,mBAAA,CAAA,KAAA,EAO9B,wBAP8B,CAAA,EAQpC,OARoC,CAQ5B,aAR4B,CAAA;EAO9B,cAAA,CAAA,eAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAmBC,mBAnBD,CAAA,EAoBN,OApBM,CAoBE,aApBF,CAAA;EACE,mBAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EA2ByC,OA3BzC,CA2BiD,aA3BjD,CAAA;EAAR,aAAA,CAAA,KAAA,EAgCwB,kBAhCxB,CAAA,EAgC6C,OAhC7C,CAgCqD,aAhCrD,CAAA;EAkBO,YAAA,CAAA,KAAA,CAAA,EAuCiB,iBAvCjB,CAAA,EAuCqC,OAvCrC,CAuC6C,cAvC7C,EAAA,CAAA;EACC,gBAAA,CAAA,KAAA,CAAA,EAsDD,qBAtDC,CAAA,EAuDR,OAvDQ,CAuDA,kBAvDA,EAAA,CAAA;EAAR,QAAA,UAAA;EAQyD,QAAA,eAAA;EAAR,QAAA,SAAA;EAKzB,QAAA,OAAA;EAA6B,QAAA,UAAA;EAAR,QAAA,aAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stripe-payments.js","names":["API_VERSION: Stripe.LatestApiVersion"],"sources":["../../../../src/integrations/providers/impls/stripe-payments.ts"],"sourcesContent":["import Stripe from 'stripe';\n\nimport type {\n CapturePaymentInput,\n CreateCustomerInput,\n CreatePaymentIntentInput,\n ListInvoicesQuery,\n ListTransactionsQuery,\n Money,\n PaymentCustomer,\n PaymentIntent,\n PaymentInvoice,\n PaymentRefund,\n PaymentTransaction,\n PaymentsProvider,\n RefundPaymentInput,\n} from '../payments';\n\nexport interface StripePaymentsProviderOptions {\n apiKey: string;\n stripe?: Stripe;\n}\n\nconst API_VERSION: Stripe.LatestApiVersion = '2025-10-29.clover';\n\nexport class StripePaymentsProvider implements PaymentsProvider {\n private readonly stripe: Stripe;\n\n constructor(options: StripePaymentsProviderOptions) {\n this.stripe =\n options.stripe ??\n new Stripe(options.apiKey, {\n apiVersion: API_VERSION,\n });\n }\n\n async createCustomer(input: CreateCustomerInput): Promise<PaymentCustomer> {\n const customer = await this.stripe.customers.create({\n email: input.email,\n name: input.name,\n description: input.description,\n metadata: input.metadata,\n });\n return this.toCustomer(customer);\n }\n\n async getCustomer(customerId: string): Promise<PaymentCustomer | null> {\n const customer = await this.stripe.customers.retrieve(customerId);\n if (customer.deleted) return null;\n return this.toCustomer(customer);\n }\n\n async createPaymentIntent(\n input: CreatePaymentIntentInput\n ): Promise<PaymentIntent> {\n const intent = await this.stripe.paymentIntents.create({\n amount: input.amount.amount,\n currency: input.amount.currency,\n customer: input.customerId,\n description: input.description,\n capture_method: input.captureMethod ?? 'automatic',\n confirmation_method: input.confirmationMethod ?? 'automatic',\n automatic_payment_methods: { enabled: true },\n metadata: input.metadata,\n return_url: input.returnUrl,\n statement_descriptor: input.statementDescriptor,\n });\n return this.toPaymentIntent(intent);\n }\n\n async capturePayment(\n paymentIntentId: string,\n input?: CapturePaymentInput\n ): Promise<PaymentIntent> {\n const intent = await this.stripe.paymentIntents.capture(\n paymentIntentId,\n input?.amount ? { amount_to_capture: input.amount.amount } : undefined\n );\n return this.toPaymentIntent(intent);\n }\n\n async cancelPaymentIntent(paymentIntentId: string): Promise<PaymentIntent> {\n const intent = await this.stripe.paymentIntents.cancel(paymentIntentId);\n return this.toPaymentIntent(intent);\n }\n\n async refundPayment(input: RefundPaymentInput): Promise<PaymentRefund> {\n const refund = await this.stripe.refunds.create({\n payment_intent: input.paymentIntentId,\n amount: input.amount?.amount,\n reason: mapRefundReason(input.reason),\n metadata: input.metadata,\n });\n const paymentIntentId =\n typeof refund.payment_intent === 'string'\n ? refund.payment_intent\n : (refund.payment_intent?.id ?? '');\n return {\n id: refund.id,\n paymentIntentId,\n amount: {\n amount: refund.amount ?? 0,\n currency: refund.currency?.toUpperCase() ?? 'USD',\n },\n status: mapRefundStatus(refund.status),\n reason: refund.reason ?? undefined,\n metadata: this.toMetadata(refund.metadata),\n createdAt: refund.created ? new Date(refund.created * 1000) : undefined,\n };\n }\n\n async listInvoices(query?: ListInvoicesQuery): Promise<PaymentInvoice[]> {\n const requestedStatus = query?.status?.[0];\n const stripeStatus =\n requestedStatus && requestedStatus !== 'deleted'\n ? requestedStatus\n : undefined;\n const response = await this.stripe.invoices.list({\n customer: query?.customerId,\n status: stripeStatus,\n limit: query?.limit,\n starting_after: query?.startingAfter,\n });\n return response.data.map((invoice) => this.toInvoice(invoice));\n }\n\n async listTransactions(\n query?: ListTransactionsQuery\n ): Promise<PaymentTransaction[]> {\n const response = await this.stripe.charges.list({\n customer: query?.customerId,\n payment_intent: query?.paymentIntentId,\n limit: query?.limit,\n starting_after: query?.startingAfter,\n });\n return response.data.map((charge) => ({\n id: charge.id,\n paymentIntentId:\n typeof charge.payment_intent === 'string'\n ? charge.payment_intent\n : charge.payment_intent?.id,\n amount: {\n amount: charge.amount,\n currency: charge.currency?.toUpperCase() ?? 'USD',\n },\n type: 'capture',\n status: mapChargeStatus(charge.status),\n description: charge.description ?? undefined,\n createdAt: new Date(charge.created * 1000),\n metadata: this.mergeMetadata(this.toMetadata(charge.metadata), {\n balanceTransaction:\n typeof charge.balance_transaction === 'string'\n ? charge.balance_transaction\n : undefined,\n }),\n }));\n }\n\n private toCustomer(customer: Stripe.Customer): PaymentCustomer {\n const metadata = this.toMetadata(customer.metadata);\n const updatedAtValue = metadata?.updatedAt;\n return {\n id: customer.id,\n email: customer.email ?? undefined,\n name: customer.name ?? undefined,\n metadata,\n createdAt: customer.created\n ? new Date(customer.created * 1000)\n : undefined,\n updatedAt: updatedAtValue ? new Date(updatedAtValue) : undefined,\n };\n }\n\n private toPaymentIntent(intent: Stripe.PaymentIntent): PaymentIntent {\n const metadata = this.toMetadata(intent.metadata);\n return {\n id: intent.id,\n amount: this.toMoney(\n intent.amount_received ?? intent.amount ?? 0,\n intent.currency\n ),\n status: mapPaymentIntentStatus(intent.status),\n customerId:\n typeof intent.customer === 'string'\n ? intent.customer\n : intent.customer?.id,\n description: intent.description ?? undefined,\n clientSecret: intent.client_secret ?? undefined,\n metadata,\n createdAt: new Date(intent.created * 1000),\n updatedAt:\n intent.canceled_at != null\n ? new Date(intent.canceled_at * 1000)\n : new Date(intent.created * 1000),\n };\n }\n\n private toInvoice(invoice: Stripe.Invoice): PaymentInvoice {\n const metadata = this.toMetadata(invoice.metadata);\n return {\n id: invoice.id,\n number: invoice.number ?? undefined,\n status: (invoice.status as PaymentInvoice['status']) ?? 'draft',\n amountDue: this.toMoney(invoice.amount_due ?? 0, invoice.currency),\n amountPaid: this.toMoney(invoice.amount_paid ?? 0, invoice.currency),\n customerId:\n typeof invoice.customer === 'string'\n ? invoice.customer\n : invoice.customer?.id,\n dueDate: invoice.due_date ? new Date(invoice.due_date * 1000) : undefined,\n hostedInvoiceUrl: invoice.hosted_invoice_url ?? undefined,\n metadata,\n createdAt: invoice.created ? new Date(invoice.created * 1000) : undefined,\n updatedAt: invoice.status_transitions?.finalized_at\n ? new Date(invoice.status_transitions.finalized_at * 1000)\n : undefined,\n };\n }\n\n private toMoney(amount: number, currency?: string | null): Money {\n return {\n amount,\n currency: currency?.toUpperCase() ?? 'USD',\n };\n }\n\n private toMetadata(\n metadata: Stripe.Metadata | Stripe.Metadata | null | undefined\n ): Record<string, string> | undefined {\n if (!metadata) return undefined;\n const entries = Object.entries(metadata).filter(\n (entry): entry is [string, string] => typeof entry[1] === 'string'\n );\n if (entries.length === 0) return undefined;\n return Object.fromEntries(entries);\n }\n\n private mergeMetadata(\n base: Record<string, string> | undefined,\n extras: Record<string, string | undefined>\n ): Record<string, string> | undefined {\n const filteredExtras = Object.entries(extras).filter(\n (entry): entry is [string, string] => typeof entry[1] === 'string'\n );\n if (!base && filteredExtras.length === 0) {\n return undefined;\n }\n return {\n ...(base ?? {}),\n ...Object.fromEntries(filteredExtras),\n };\n }\n}\n\nfunction mapRefundReason(\n reason?: string\n): Stripe.RefundCreateParams.Reason | undefined {\n if (!reason) return undefined;\n const allowed: Stripe.RefundCreateParams.Reason[] = [\n 'duplicate',\n 'fraudulent',\n 'requested_by_customer',\n ];\n return allowed.includes(reason as Stripe.RefundCreateParams.Reason)\n ? (reason as Stripe.RefundCreateParams.Reason)\n : undefined;\n}\n\nfunction mapPaymentIntentStatus(\n status: string | null | undefined\n): PaymentIntent['status'] {\n switch (status) {\n case 'requires_payment_method':\n return 'requires_payment_method';\n case 'requires_confirmation':\n return 'requires_confirmation';\n case 'requires_action':\n case 'requires_capture':\n return 'requires_action';\n case 'processing':\n return 'processing';\n case 'succeeded':\n return 'succeeded';\n case 'canceled':\n return 'canceled';\n default:\n return 'requires_payment_method';\n }\n}\n\nfunction mapRefundStatus(\n status: string | null | undefined\n): PaymentRefund['status'] {\n switch (status) {\n case 'pending':\n case 'succeeded':\n case 'failed':\n case 'canceled':\n return status;\n default:\n return 'pending';\n }\n}\n\nfunction mapChargeStatus(\n status: string | null | undefined\n): PaymentTransaction['status'] {\n switch (status) {\n case 'pending':\n case 'processing':\n return 'pending';\n case 'succeeded':\n return 'succeeded';\n case 'failed':\n case 'canceled':\n return 'failed';\n default:\n return 'pending';\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"twilio-sms.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/twilio-sms.ts"],"sourcesContent":[],"mappings":";;;;KASK,YAAA,GAAe,kBAAkB;UAErB,wBAAA;EAFZ,UAAA,EAAA,MAAY;EAEA,SAAA,EAAA,MAAA;EAOJ,UAAA,CAAA,EAAA,MAAA;EAIU,MAAA,CAAA,EAPZ,YAOY;;AAMuB,cAVjC,iBAAA,YAA6B,WAUI,CAAA;EAAR,iBAAA,MAAA;EAyBgB,iBAAA,UAAA;EAAR,WAAA,CAAA,OAAA,EA/BvB,wBA+BuB;EAnCJ,OAAA,CAAA,KAAA,EAUnB,YAVmB,CAAA,EAUJ,OAVI,CAUI,UAVJ,CAAA;EAAW,iBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAmCP,OAnCO,CAmCC,iBAnCD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"twilio-sms.js","names":[],"sources":["../../../../src/integrations/providers/impls/twilio-sms.ts"],"sourcesContent":["import Twilio from 'twilio';\n\nimport type {\n SendSmsInput,\n SmsDeliveryStatus,\n SmsMessage,\n SmsProvider,\n} from '../sms';\n\ntype TwilioClient = ReturnType<typeof Twilio>;\n\nexport interface TwilioSmsProviderOptions {\n accountSid: string;\n authToken: string;\n fromNumber?: string;\n client?: TwilioClient;\n}\n\nexport class TwilioSmsProvider implements SmsProvider {\n private readonly client: TwilioClient;\n private readonly fromNumber?: string;\n\n constructor(options: TwilioSmsProviderOptions) {\n this.client =\n options.client ?? Twilio(options.accountSid, options.authToken);\n this.fromNumber = options.fromNumber;\n }\n\n async sendSms(input: SendSmsInput): Promise<SmsMessage> {\n const message = await this.client.messages.create({\n to: input.to,\n from: input.from ?? this.fromNumber,\n body: input.body,\n });\n\n return {\n id: message.sid,\n to: message.to ?? input.to,\n from: message.from ?? input.from ?? this.fromNumber ?? '',\n body: message.body ?? input.body,\n status: mapStatus(message.status),\n sentAt: message.dateCreated ? new Date(message.dateCreated) : undefined,\n deliveredAt:\n message.status === 'delivered' && message.dateUpdated\n ? new Date(message.dateUpdated)\n : undefined,\n price: message.price ? Number(message.price) : undefined,\n priceCurrency: message.priceUnit ?? undefined,\n errorCode: message.errorCode ? String(message.errorCode) : undefined,\n errorMessage: message.errorMessage ?? undefined,\n };\n }\n\n async getDeliveryStatus(messageId: string): Promise<SmsDeliveryStatus> {\n const message = await this.client.messages(messageId).fetch();\n return {\n status: mapStatus(message.status),\n errorCode: message.errorCode ? String(message.errorCode) : undefined,\n errorMessage: message.errorMessage ?? undefined,\n updatedAt: message.dateUpdated\n ? new Date(message.dateUpdated)\n : new Date(),\n };\n }\n}\n\nfunction mapStatus(status: string | null): SmsMessage['status'] {\n switch (status) {\n case 'queued':\n case 'accepted':\n case 'scheduled':\n return 'queued';\n case 'sending':\n case 'processing':\n return 'sending';\n case 'sent':\n return 'sent';\n case 'delivered':\n return 'delivered';\n case 'undelivered':\n return 'undelivered';\n case 'failed':\n case 'canceled':\n return 'failed';\n default:\n return 'queued';\n }\n}\n"],"mappings":"sBAkBA,IAAa,EAAb,KAAsD,CACpD,OACA,WAEA,YAAY,EAAmC,CAC7C,KAAK,OACH,EAAQ,QAAU,EAAO,EAAQ,WAAY,EAAQ,UAAU,CACjE,KAAK,WAAa,EAAQ,WAG5B,MAAM,QAAQ,EAA0C,CACtD,IAAM,EAAU,MAAM,KAAK,OAAO,SAAS,OAAO,CAChD,GAAI,EAAM,GACV,KAAM,EAAM,MAAQ,KAAK,WACzB,KAAM,EAAM,KACb,CAAC,CAEF,MAAO,CACL,GAAI,EAAQ,IACZ,GAAI,EAAQ,IAAM,EAAM,GACxB,KAAM,EAAQ,MAAQ,EAAM,MAAQ,KAAK,YAAc,GACvD,KAAM,EAAQ,MAAQ,EAAM,KAC5B,OAAQ,EAAU,EAAQ,OAAO,CACjC,OAAQ,EAAQ,YAAc,IAAI,KAAK,EAAQ,YAAY,CAAG,IAAA,GAC9D,YACE,EAAQ,SAAW,aAAe,EAAQ,YACtC,IAAI,KAAK,EAAQ,YAAY,CAC7B,IAAA,GACN,MAAO,EAAQ,MAAQ,OAAO,EAAQ,MAAM,CAAG,IAAA,GAC/C,cAAe,EAAQ,WAAa,IAAA,GACpC,UAAW,EAAQ,UAAY,OAAO,EAAQ,UAAU,CAAG,IAAA,GAC3D,aAAc,EAAQ,cAAgB,IAAA,GACvC,CAGH,MAAM,kBAAkB,EAA+C,CACrE,IAAM,EAAU,MAAM,KAAK,OAAO,SAAS,EAAU,CAAC,OAAO,CAC7D,MAAO,CACL,OAAQ,EAAU,EAAQ,OAAO,CACjC,UAAW,EAAQ,UAAY,OAAO,EAAQ,UAAU,CAAG,IAAA,GAC3D,aAAc,EAAQ,cAAgB,IAAA,GACtC,UAAW,EAAQ,YACf,IAAI,KAAK,EAAQ,YAAY,CAC7B,IAAI,KACT,GAIL,SAAS,EAAU,EAA6C,CAC9D,OAAQ,EAAR,CACE,IAAK,SACL,IAAK,WACL,IAAK,YACH,MAAO,SACT,IAAK,UACL,IAAK,aACH,MAAO,UACT,IAAK,OACH,MAAO,OACT,IAAK,YACH,MAAO,YACT,IAAK,cACH,MAAO,cACT,IAAK,SACL,IAAK,WACH,MAAO,SACT,QACE,MAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","names":[],"sources":["../../../src/integrations/providers/llm.ts"],"sourcesContent":[],"mappings":";KAAY,OAAA;AAAA,UAEK,WAAA,CAFE;EAEF,IAAA,EAAA,MAAA;EAKA,IAAA,EAAA,MAAA;AAOjB;AAMY,UAbK,eAAA,CAaS;EAAG,IAAA,EAAA,WAAA;EAAc,EAAA,EAAA,MAAA;EAAkB,IAAA,EAAA,MAAA;EAAiB,SAAA,EAAA,MAAA;AAE9E;AACQ,UATS,iBAAA,CAST;EACG,IAAA,EAAA,aAAA;EAGE,UAAA,EAAA,MAAA;EAAM,MAAA,EAAA,MAAA;AAGnB;AAMiB,KAhBL,cAAA,GAAiB,WAgBC,GAhBa,eAgBb,GAhB+B,iBAgB/B;AAMb,UApBA,UAAA,CAoBc;EAOrB,IAAA,EA1BF,OA0BE;EAEG,OAAA,EA3BF,cA2BE,EAAA;EAEF,IAAA,CAAA,EAAA,MAAA;EAAW,UAAA,CAAA,EAAA,MAAA;EAGL,QAAA,CAAA,EA7BJ,MA6Be,CAAA,MAAA,EAAA,MACjB,CAAA;AAMX;AAGa,UApCI,iBAAA,CAoCJ;EAKD,IAAA,EAAA,MAAA;EAKC,WAAA,CAAA,EAAA,MAAA;EAIA,WAAA,EAAA,OAAA;;AAIc,UAhDV,aAAA,CAgDU;EAGV,YAAA,EAAA,MAAgB;EAIhB,gBAAW,EAAA,MAAA;EACX,WAAA,EAAA,MAAA;;AAAiD,UAlDjD,cAAA,CAkDiD;EAAR,KAAA,CAAA,EAAA,MAAA;EAE5C,WAAA,CAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAAA,MAAA;EACK,eAAA,CAAA,EAAA,MAAA;EAAd,aAAA,CAAA,EAAA,MAAA,EAAA;EACmB,cAAA,CAAA,EAAA,MAAA,GAAA,MAAA;EAAuB,KAAA,CAAA,EAhDrC,iBAgDqC,EAAA;EAAR,MAAA,CAAA,EAAA,MAAA;EAAO,QAAA,CAAA,EA9CjC,MA8CiC,CAAA,MAAA,EAAA,MAAA,CAAA;;WA5CnC;;UAGM,WAAA;WACN;UACD;;;;KAKE,cAAA;;SAGC;;;;QAKD;;;;SAKC;;;SAIA;;;YAIG;;UAGC,gBAAA;;;UAIA,WAAA;iBACA,wBAAwB,iBAAiB,QAAQ;mBAEpD,wBACA,iBACT,cAAc;wBACK,eAAe,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mistral.d.ts","names":[],"sources":["../../../src/integrations/providers/mistral.ts"],"sourcesContent":[],"mappings":";;;cAGa,wBAAwB;iBAyErB,0BAAA,WACJ,0BACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mistral.js","names":["mistralIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/mistral.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const mistralIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'ai-llm.mistral',\n version: 1,\n category: 'ai-llm',\n displayName: 'Mistral AI',\n title: 'Mistral Large Language Model',\n description:\n 'Mistral integration providing chat completions and embedding generation.',\n domain: 'ai',\n owners: ['platform.ai'],\n tags: ['ai', 'llm', 'embeddings'],\n stability: StabilityEnum.Experimental,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [\n { key: 'ai.chat', version: 1 },\n { key: 'ai.embeddings', version: 1 },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n model: {\n type: 'string',\n description:\n 'Default chat completion model (e.g., mistral-large-latest).',\n },\n embeddingModel: {\n type: 'string',\n description: 'Embedding model identifier.',\n },\n },\n },\n example: {\n model: 'mistral-large-latest',\n embeddingModel: 'mistral-embed',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['apiKey'],\n properties: {\n apiKey: {\n type: 'string',\n description:\n 'Mistral API key with access to chat and embeddings endpoints.',\n },\n },\n },\n example: {\n apiKey: 'mistral-***',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 5000,\n },\n docsUrl: 'https://docs.mistral.ai/platform/endpoints',\n constraints: {\n rateLimit: {\n rpm: 600,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Generate an API key within the Mistral console and ensure the selected models are enabled for the account.',\n },\n};\n\nexport function registerMistralIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(mistralIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAA0C,CACrD,KAAM,CACJ,IAAK,iBACL,QAAS,EACT,SAAU,SACV,YAAa,aACb,MAAO,+BACP,YACE,2EACF,OAAQ,KACR,OAAQ,CAAC,cAAc,CACvB,KAAM,CAAC,KAAM,MAAO,aAAa,CACjC,UAAW,EAAc,aAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CACR,CAAE,IAAK,UAAW,QAAS,EAAG,CAC9B,CAAE,IAAK,gBAAiB,QAAS,EAAG,CACrC,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,MAAO,CACL,KAAM,SACN,YACE,8DACH,CACD,eAAgB,CACd,KAAM,SACN,YAAa,8BACd,CACF,CACF,CACD,QAAS,CACP,MAAO,uBACP,eAAgB,gBACjB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YACE,gEACH,CACF,CACF,CACD,QAAS,CACP,OAAQ,cACT,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,6GACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAuB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openbanking.d.ts","names":[],"sources":["../../../src/integrations/providers/openbanking.ts"],"sourcesContent":[],"mappings":";KAAY,2BAAA;AAAA,UAMK,yBAAA,CANsB;EAMtB,EAAA,EAAA,MAAA;EAqBA,UAAA,EAAA,MAAA;EAUA,QAAA,EAAA,MAAA;EAwBL,YAAA,EAAA,MAAA;EAQK,MAAA,CAAA,EAAA,MAAA;EAWA,WAAA,EAAA,MAAA;EAUA,aAAA,EAAA,MAAA;EAUA,eAAA,EAAA,MAAA;EAMA,kBAAA,CAAA,EAAA,MAAA;EAOA,WAAA,EAAA,MAAA;EAWA,IAAA,CAAA,EAAA,MAAA;EAMA,GAAA,CAAA,EAAA,MAAA;EAOA,QAAA,EAAA,MAAA;EAKA,mBAAA,CAAA,EAAmB,MAAA;EAExB,SAAA,CAAA,EA3HE,2BA2HF;EACC,MAAA,CAAA,EAAA,QAAA,GAAA,UAAA,GAAA,QAAA,GAAA,WAAA;EAAR,YAAA,CAAA,EAAA,MAAA;EAEO,QAAA,CAAA,EA3HC,MA2HD,CAAA,MAAA,EAAA,OAAA,CAAA;;AACP,UAzHY,yBAAA,SAAkC,yBAyH9C,CAAA;EAEO,WAAA,CAAA,EAAA,MAAA;EACC,QAAA,CAAA,EAAA,MAAA;EAAR,QAAA,CAAA,EAAA,MAAA;EAEO,gBAAA,CAAA,EAAA,MAAA;EACC,cAAA,CAAA,EAAA,MAAA;EAAR,WAAA,CAAA,EAAA,MAAA;EAEO,YAAA,CAAA,EA1HK,MA0HL,CAAA,MAAA,EAAA,OAAA,CAAA;;AACP,UAxHY,sBAAA,CAwHZ;EAAO,EAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;aAnGC;;KAGD,sBAAA;UAQK,yBAAA;;;;QAIT;;;;aAIK;;UAGI,2BAAA;;;;;;;YAOL;;UAGK,6BAAA;;;;;;;;;UAUA,6BAAA;YACL;;;;UAKK,kCAAA;;;;;;UAOA,iCAAA;;;;;;;;;;UAWA,iCAAA;gBACD;;;;UAKC,4BAAA;;;;iBAIA;;UAGA,oCAAA;;;;UAKA,mBAAA;uBAEL,gCACP,QAAQ;4BAED,qCACP,QAAQ;2BAED,oCACP,QAAQ;sBAED,+BACP,QAAQ;8BAED,uCACP,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payments.d.ts","names":[],"sources":["../../../src/integrations/providers/payments.ts"],"sourcesContent":[],"mappings":";UAAiB,KAAA;EAAA;EAML,MAAA,EAAA,MAAA;EAQK,QAAA,EAAA,MAAA;;AAKH,KAbF,mBAAA,GAaE,yBAAA,GAAA,uBAAA,GAAA,iBAAA,GAAA,YAAA,GAAA,WAAA,GAAA,UAAA;AACA,UANG,eAAA,CAMH;EAAI,EAAA,EAAA,MAAA;EAGD,KAAA,CAAA,EAAA,MAAA;EAOA,IAAA,CAAA,EAAA,MAAA;EAEP,QAAA,CAAA,EAdG,MAcH,CAAA,MAAA,EAAA,MAAA,CAAA;EACA,SAAA,CAAA,EAdI,IAcJ;EAIG,SAAA,CAAA,EAjBC,IAiBD;;AAEC,UAhBG,mBAAA,CAgBH;EAAI,KAAA,CAAA,EAAA,MAAA;EAGD,IAAA,CAAA,EAAA,MAAA;EAWA,WAAA,CAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAhCJ,MAgCiB,CAAA,MAAA,EAAA,MAAA,CAAA;;AAMjB,UAnCI,aAAA,CAmCJ;EACC,EAAA,EAAA,MAAA;EAAI,MAAA,EAlCR,KAkCQ;EAGD,MAAA,EApCP,mBAoCyB;EAOlB,UAAA,CAAA,EAAA,MAAc;EAIlB,YAAA,CAAA,EAAA,MAAA;EACE,WAAA,CAAA,EAAA,MAAA;EAEH,QAAA,CAAA,EA9CC,MA8CD,CAAA,MAAA,EAAA,MAAA,CAAA;EAEC,SAAA,CAAA,EA/CC,IA+CD;EACC,SAAA,CAAA,EA/CA,IA+CA;;AACI,UA7CD,wBAAA,CA6CC;EAGD,MAAA,EA/CP,KA+CO;EAOA,UAAA,CAAA,EAAA,MAAA;EAGP,kBAAA,CAAA,EAAA,WAAA,GAAA,QAAA;EAIG,aAAA,CAAA,EAAA,WAAA,GAAA,QAAA;EACA,WAAA,CAAA,EAAA,MAAA;EAAM,QAAA,CAAA,EAzDN,MAyDM,CAAA,MAAA,EAAA,MAAA,CAAA;EAGF,mBAAA,CAAA,EAAA,MAAqB;EAOrB,SAAA,CAAA,EAAA,MAAA;;AACqC,UA/DrC,mBAAA,CA+DqC;EAAR,MAAA,CAAA,EA9DnC,KA8DmC;EACH,YAAA,CAAA,EAAA,MAAA;EAAR,QAAA,CAAA,EA7DtB,MA6DsB,CAAA,MAAA,EAAA,MAAA,CAAA;;AAC6B,UA3D/C,aAAA,CA2D+C;EAAR,EAAA,EAAA,MAAA;EAG5C,eAAA,EAAA,MAAA;EACC,MAAA,EA5DH,KA4DG;EAAR,MAAA,EAAA,SAAA,GAAA,WAAA,GAAA,QAAA,GAAA,UAAA;EACmD,MAAA,CAAA,EAAA,MAAA;EAAR,QAAA,CAAA,EA1DnC,MA0DmC,CAAA,MAAA,EAAA,MAAA,CAAA;EACzB,SAAA,CAAA,EA1DT,IA0DS;;AAAqB,UAvD3B,kBAAA,CAuD2B;EACrB,eAAA,EAAA,MAAA;EAA4B,MAAA,CAAA,EAtDxC,KAsDwC;EAAR,MAAA,CAAA,EAAA,MAAA;EAE/B,QAAA,CAAA,EAtDC,MAsDD,CAAA,MAAA,EAAA,MAAA,CAAA;;AACP,UApDY,cAAA,CAoDZ;EAAO,EAAA,EAAA,MAAA;;;aAhDC;eACE;;YAEH;;aAEC;cACC;cACA;;UAGG,iBAAA;;WAEN;;;;UAKM,kBAAA;;;UAGP;;;;aAIG;aACA;;UAGI,qBAAA;;;;;;UAOA,gBAAA;wBACO,sBAAsB,QAAQ;mCACnB,QAAQ;6BACd,2BAA2B,QAAQ;kDAGpD,sBACP,QAAQ;gDACmC,QAAQ;uBACjC,qBAAqB,QAAQ;uBAC7B,oBAAoB,QAAQ;2BAEvC,wBACP,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postmark.d.ts","names":[],"sources":["../../../src/integrations/providers/postmark.ts"],"sourcesContent":[],"mappings":";;;cAGa,yBAAyB;iBA2EtB,2BAAA,WACJ,0BACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postmark.js","names":["postmarkIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/postmark.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const postmarkIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'email.postmark',\n version: 1,\n category: 'email',\n displayName: 'Postmark',\n title: 'Postmark Transactional Email',\n description: 'Postmark integration for transactional email delivery.',\n domain: 'communications',\n owners: ['platform.messaging'],\n tags: ['email', 'transactional'],\n stability: StabilityEnum.Stable,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'email.transactional', version: 1 }],\n requires: [\n {\n key: 'platform.webhooks',\n optional: true,\n reason: 'Optional for inbound bounce handling',\n },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n messageStream: {\n type: 'string',\n description:\n 'Optional message stream identifier (e.g., transactional).',\n },\n fromEmail: {\n type: 'string',\n description: 'Default From address used for outbound messages.',\n },\n },\n },\n example: {\n messageStream: 'outbound',\n fromEmail: 'notifications@example.com',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['serverToken'],\n properties: {\n serverToken: {\n type: 'string',\n description: 'Server token for the Postmark account.',\n },\n },\n },\n example: {\n serverToken: 'server-***',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 3000,\n },\n docsUrl: 'https://postmarkapp.com/developer',\n constraints: {\n rateLimit: {\n rpm: 500,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create a Postmark server token with outbound send permissions and configure allowed from addresses.',\n },\n};\n\nexport function registerPostmarkIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(postmarkIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAA2C,CACtD,KAAM,CACJ,IAAK,iBACL,QAAS,EACT,SAAU,QACV,YAAa,WACb,MAAO,+BACP,YAAa,yDACb,OAAQ,iBACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,QAAS,gBAAgB,CAChC,UAAW,EAAc,OAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,sBAAuB,QAAS,EAAG,CAAC,CACtD,SAAU,CACR,CACE,IAAK,oBACL,SAAU,GACV,OAAQ,uCACT,CACF,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,cAAe,CACb,KAAM,SACN,YACE,4DACH,CACD,UAAW,CACT,KAAM,SACN,YAAa,mDACd,CACF,CACF,CACD,QAAS,CACP,cAAe,WACf,UAAW,4BACZ,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,cAAc,CACzB,WAAY,CACV,YAAa,CACX,KAAM,SACN,YAAa,yCACd,CACF,CACF,CACD,QAAS,CACP,YAAa,aACd,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,oCACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,sGACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAwB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powens.d.ts","names":[],"sources":["../../../src/integrations/providers/powens.ts"],"sourcesContent":[],"mappings":";;;cAIa,uBAAuB;AAAvB,iBA6GG,yBAAA,CA7GoB,QA2GnC,EAGW,uBAHX,CAAA,EAIE,uBAJF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powens.js","names":["powensIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/powens.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec } from '../spec';\nimport type { IntegrationSpecRegistry } from '../spec';\n\nexport const powensIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'openbanking.powens',\n version: 1,\n category: 'open-banking',\n displayName: 'Powens Open Banking',\n title: 'Powens Open Banking (Read)',\n description:\n 'Read-only Open Banking integration powered by Powens, exposing accounts, transactions, and balances.',\n domain: 'finance',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'finance'],\n stability: StabilityEnum.Experimental,\n },\n supportedModes: ['byok'],\n capabilities: {\n provides: [\n { key: 'openbanking.accounts.read', version: 1 },\n { key: 'openbanking.transactions.read', version: 1 },\n { key: 'openbanking.balances.read', version: 1 },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n required: ['environment'],\n properties: {\n environment: {\n type: 'string',\n enum: ['sandbox', 'production'],\n description:\n 'Powens environment to target. Sandbox uses Powens test API base URL, production uses live endpoints.',\n },\n baseUrl: {\n type: 'string',\n description:\n 'Optional override for the Powens API base URL. Defaults to Powens environment defaults.',\n },\n region: {\n type: 'string',\n description:\n 'Optional Powens region identifier when targeting a specific data residency cluster.',\n },\n pollingIntervalMs: {\n type: 'number',\n description:\n 'Optional custom polling interval in milliseconds for background sync jobs (defaults to platform standard).',\n },\n },\n },\n example: {\n environment: 'sandbox',\n baseUrl: 'https://api-sandbox.powens.com/v2',\n region: 'eu-west-1',\n pollingIntervalMs: 300000,\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientId', 'clientSecret'],\n properties: {\n clientId: {\n type: 'string',\n description:\n 'Powens OAuth client identifier obtained from the Powens Console (BYOK project).',\n },\n clientSecret: {\n type: 'string',\n description:\n 'Powens OAuth client secret used to exchange for access tokens.',\n },\n apiKey: {\n type: 'string',\n description:\n 'Optional Powens API key (if the tenant project exposes a dedicated API token).',\n },\n webhookSecret: {\n type: 'string',\n description:\n 'Optional webhook signing secret used to verify Powens webhook payloads.',\n },\n },\n },\n example: {\n clientId: 'powens-client-id',\n clientSecret: 'powens-client-secret',\n apiKey: 'powens-api-key',\n webhookSecret: 'powens-webhook-secret',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 8000,\n },\n docsUrl: 'https://docs.powens.com/',\n constraints: {\n rateLimit: {\n rph: 10000,\n rpm: 600,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create a Powens BYOK project, generate OAuth credentials, and optionally configure webhook delivery for account/transaction updates.',\n requiredScopes: ['accounts:read', 'transactions:read', 'balances:read'],\n },\n};\n\nexport function registerPowensIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(powensIntegrationSpec);\n}\n"],"mappings":"mDAIA,MAAaA,EAAyC,CACpD,KAAM,CACJ,IAAK,qBACL,QAAS,EACT,SAAU,eACV,YAAa,sBACb,MAAO,6BACP,YACE,uGACF,OAAQ,UACR,OAAQ,CAAC,mBAAmB,CAC5B,KAAM,CAAC,eAAgB,SAAU,UAAU,CAC3C,UAAW,EAAc,aAC1B,CACD,eAAgB,CAAC,OAAO,CACxB,aAAc,CACZ,SAAU,CACR,CAAE,IAAK,4BAA6B,QAAS,EAAG,CAChD,CAAE,IAAK,gCAAiC,QAAS,EAAG,CACpD,CAAE,IAAK,4BAA6B,QAAS,EAAG,CACjD,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,cAAc,CACzB,WAAY,CACV,YAAa,CACX,KAAM,SACN,KAAM,CAAC,UAAW,aAAa,CAC/B,YACE,uGACH,CACD,QAAS,CACP,KAAM,SACN,YACE,0FACH,CACD,OAAQ,CACN,KAAM,SACN,YACE,sFACH,CACD,kBAAmB,CACjB,KAAM,SACN,YACE,6GACH,CACF,CACF,CACD,QAAS,CACP,YAAa,UACb,QAAS,oCACT,OAAQ,YACR,kBAAmB,IACpB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,WAAY,eAAe,CACtC,WAAY,CACV,SAAU,CACR,KAAM,SACN,YACE,kFACH,CACD,aAAc,CACZ,KAAM,SACN,YACE,iEACH,CACD,OAAQ,CACN,KAAM,SACN,YACE,iFACH,CACD,cAAe,CACb,KAAM,SACN,YACE,0EACH,CACF,CACF,CACD,QAAS,CACP,SAAU,mBACV,aAAc,uBACd,OAAQ,iBACR,cAAe,wBAChB,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,2BACT,YAAa,CACX,UAAW,CACT,IAAK,IACL,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,uIACF,eAAgB,CAAC,gBAAiB,oBAAqB,gBAAgB,CACxE,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant.d.ts","names":[],"sources":["../../../src/integrations/providers/qdrant.ts"],"sourcesContent":[],"mappings":";;;cAGa,uBAAuB;iBAgFpB,yBAAA,WACJ,0BACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant.js","names":["qdrantIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/qdrant.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const qdrantIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'vectordb.qdrant',\n version: 1,\n category: 'vector-db',\n displayName: 'Qdrant',\n title: 'Qdrant Vector Database',\n description: 'Qdrant integration for vector search and embeddings storage.',\n domain: 'ai',\n owners: ['platform.ai'],\n tags: ['vector-db', 'search'],\n stability: StabilityEnum.Experimental,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [\n { key: 'vector-db.search', version: 1 },\n { key: 'vector-db.storage', version: 1 },\n ],\n requires: [\n {\n key: 'ai.embeddings',\n optional: true,\n reason:\n 'Required if vectors are generated via hosted embedding services',\n },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n apiUrl: {\n type: 'string',\n description:\n 'Base URL for the Qdrant instance (e.g., https://qdrant.example.com).',\n },\n collectionPrefix: {\n type: 'string',\n description:\n 'Prefix applied to all collection names for this tenant.',\n },\n },\n },\n example: {\n apiUrl: 'https://qdrant.example.com',\n collectionPrefix: 'tenant_',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n properties: {\n apiKey: {\n type: 'string',\n description: 'API key or token when authentication is enabled.',\n },\n },\n },\n example: {\n apiKey: 'qdrant-api-key',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 4000,\n },\n docsUrl: 'https://qdrant.tech/documentation/quick-start/',\n constraints: {\n quotas: {\n collections: 100,\n pointsPerCollection: 1_000_000,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Provide the HTTPS endpoint of your Qdrant cluster and generate an API key with read/write access to the collections that will be managed.',\n },\n};\n\nexport function registerQdrantIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(qdrantIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAAyC,CACpD,KAAM,CACJ,IAAK,kBACL,QAAS,EACT,SAAU,YACV,YAAa,SACb,MAAO,yBACP,YAAa,+DACb,OAAQ,KACR,OAAQ,CAAC,cAAc,CACvB,KAAM,CAAC,YAAa,SAAS,CAC7B,UAAW,EAAc,aAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CACR,CAAE,IAAK,mBAAoB,QAAS,EAAG,CACvC,CAAE,IAAK,oBAAqB,QAAS,EAAG,CACzC,CACD,SAAU,CACR,CACE,IAAK,gBACL,SAAU,GACV,OACE,kEACH,CACF,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YACE,uEACH,CACD,iBAAkB,CAChB,KAAM,SACN,YACE,0DACH,CACF,CACF,CACD,QAAS,CACP,OAAQ,6BACR,iBAAkB,UACnB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,mDACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,iBACT,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,iDACT,YAAa,CACX,OAAQ,CACN,YAAa,IACb,oBAAqB,IACtB,CACF,CACD,UAAW,CACT,kBACE,4IACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sms.d.ts","names":[],"sources":["../../../src/integrations/providers/sms.ts"],"sourcesContent":[],"mappings":";UAAiB,UAAA;EAAA,EAAA,EAAA,MAAA;EAsBA,EAAA,EAAA,MAAA;EAOA,IAAA,EAAA,MAAA;EAOA,IAAA,EAAA,MAAA;EACA,MAAA,EAAA,QAAA,GAAA,SAAA,GAAA,MAAA,GAAA,WAAA,GAAA,aAAA,GAAA,QAAA;EAAuB,iBAAA,CAAA,EAAA,MAAA;EAAR,OAAA,CAAA,EAAA,MAAA;EACgB,KAAA,CAAA,EAAA,MAAA;EAAR,aAAA,CAAA,EAAA,MAAA;EAAO,MAAA,CAAA,EAtBpC,IAsBoC;gBArB/B;;;;UAKC,YAAA;;;;aAIJ;;UAGI,iBAAA;UACP;;;aAGG;;UAGI,WAAA;iBACA,eAAe,QAAQ;wCACA,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","names":[],"sources":["../../../src/integrations/providers/storage.ts"],"sourcesContent":[],"mappings":";UAAiB,qBAAA;EAAA,MAAA,EAAA,MAAA;EAWL,GAAA,EAAA,MAAA;EACA,SAAA,CAAA,EAAA,MAAA;EAC8B,WAAA,CAAA,EAAA,MAAA;EAAd,IAAA,CAAA,EAAA,MAAA;EAAa,QAAA,CAAA,EAAA,MAAA;EAE7B,YAAA,CAAA,EARK,IAQU;EAEV,QAAA,CAAA,EATJ,MASkB,CAAA,MAAA,EAAA,MAAA,CAAA;;AAGV,KATT,iBAAA,GASS;EAER,IAAA,EAVD,UAUC;EAAM,MAAA,CAAA,EAAA,KAAA;AAInB,CAAA,GAAiB;EAKA,IAAA,CAAA,EAAA,KAAA;EAQA,MAAA,EA1BW,aA0BK,CA1BS,UA0BT,CAAA;AAOjC,CAAA;AAKiB,KApCL,eAAA,GAAkB,qBAoCQ,GApCgB,iBAoChB;AACnB,UAnCF,cAAA,CAmCE;EAAyB,MAAA,EAAA,MAAA;EAAR,GAAA,EAAA,MAAA;EACjB,IAAA,EAjCX,UAiCW,GAjCE,WAiCF;EAA4B,WAAA,CAAA,EAAA,MAAA;EAAR,QAAA,CAAA,EA/B1B,MA+B0B,CAAA,MAAA,EAAA,MAAA,CAAA;EACjB,UAAA,CAAA,EAAA,OAAA;;AAET,UA9BI,iBAAA,CA8BJ;EAC0B,MAAA,EAAA,MAAA;EAAlC,GAAA,EAAA,MAAA;;AAC2C,UA3B/B,gBAAA,CA2B+B;EAAR,MAAA,EAAA,MAAA;EAAO,GAAA,EAAA,MAAA;;;;;UAnB9B,gBAAA;;;;;;UAOA,iBAAA;WACN;;;UAIM,qBAAA;mBACE,iBAAiB,QAAQ;mBACzB,oBAAoB,QAAQ;sBACzB,oBAAoB;6BAE7B,mBACR;;eAAkC;;qBAClB,mBAAmB,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.d.ts","names":[],"sources":["../../../src/integrations/providers/stripe.ts"],"sourcesContent":[],"mappings":";;;cAIa,uBAAuB;AAAvB,iBAkFG,yBAAA,CAlFoB,QAgFnC,EAGW,uBAHX,CAAA,EAIE,uBAJF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.js","names":["stripeIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/stripe.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec } from '../spec';\nimport type { IntegrationSpecRegistry } from '../spec';\n\nexport const stripeIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'payments.stripe',\n version: 1,\n category: 'payments',\n displayName: 'Stripe',\n title: 'Stripe Payments',\n description:\n 'Stripe integration for payment processing, charges, and payouts.',\n domain: 'payments',\n owners: ['platform.payments'],\n tags: ['payments', 'psp'],\n stability: StabilityEnum.Stable,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'payments.psp', version: 1 }],\n requires: [\n {\n key: 'platform.webhooks',\n optional: true,\n reason: 'Recommended for reliable event ingestion',\n },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n accountId: {\n type: 'string',\n description: 'Connected account ID when using Stripe Connect (BYOK).',\n },\n region: {\n type: 'string',\n description: 'Optional Stripe region or data residency hint.',\n },\n },\n },\n example: {\n accountId: 'acct_123',\n region: 'us-east-1',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['apiKey', 'webhookSecret'],\n properties: {\n apiKey: {\n type: 'string',\n description: 'Stripe secret API key (sk_live_... or sk_test_...).',\n },\n webhookSecret: {\n type: 'string',\n description: 'Signing secret for webhook verification.',\n },\n },\n },\n example: {\n apiKey: 'sk_live_***',\n webhookSecret: 'whsec_***',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 5000,\n },\n docsUrl: 'https://stripe.com/docs/api',\n constraints: {\n rateLimit: {\n rpm: 1000,\n rph: 20000,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create a restricted Stripe API key with write access to Charges and provide a webhook signing secret.',\n requiredScopes: ['charges:write', 'customers:read'],\n },\n};\n\nexport function registerStripeIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(stripeIntegrationSpec);\n}\n"],"mappings":"mDAIA,MAAaA,EAAyC,CACpD,KAAM,CACJ,IAAK,kBACL,QAAS,EACT,SAAU,WACV,YAAa,SACb,MAAO,kBACP,YACE,mEACF,OAAQ,WACR,OAAQ,CAAC,oBAAoB,CAC7B,KAAM,CAAC,WAAY,MAAM,CACzB,UAAW,EAAc,OAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,eAAgB,QAAS,EAAG,CAAC,CAC/C,SAAU,CACR,CACE,IAAK,oBACL,SAAU,GACV,OAAQ,2CACT,CACF,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,UAAW,CACT,KAAM,SACN,YAAa,yDACd,CACD,OAAQ,CACN,KAAM,SACN,YAAa,iDACd,CACF,CACF,CACD,QAAS,CACP,UAAW,WACX,OAAQ,YACT,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAU,gBAAgB,CACrC,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,sDACd,CACD,cAAe,CACb,KAAM,SACN,YAAa,2CACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,cACR,cAAe,YAChB,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,8BACT,YAAa,CACX,UAAW,CACT,IAAK,IACL,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,wGACF,eAAgB,CAAC,gBAAiB,iBAAiB,CACpD,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"twilio-sms.d.ts","names":[],"sources":["../../../src/integrations/providers/twilio-sms.ts"],"sourcesContent":[],"mappings":";;;cAGa,0BAA0B;iBAoEvB,4BAAA,WACJ,0BACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"twilio-sms.js","names":["twilioSmsIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/twilio-sms.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const twilioSmsIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'sms.twilio',\n version: 1,\n category: 'sms',\n displayName: 'Twilio SMS',\n title: 'Twilio Messaging',\n description:\n 'Twilio SMS integration for transactional and notification messaging.',\n domain: 'communications',\n owners: ['platform.messaging'],\n tags: ['sms', 'messaging'],\n stability: StabilityEnum.Stable,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'sms.outbound', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n fromNumber: {\n type: 'string',\n description: 'Default Twilio phone number used as sender.',\n },\n },\n },\n example: {\n fromNumber: '+15551234567',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['accountSid', 'authToken'],\n properties: {\n accountSid: {\n type: 'string',\n description: 'Twilio Account SID.',\n },\n authToken: {\n type: 'string',\n description: 'Twilio Auth Token.',\n },\n },\n },\n example: {\n accountSid: 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n authToken: 'auth-token',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 3000,\n },\n docsUrl: 'https://www.twilio.com/docs/sms/api',\n constraints: {\n rateLimit: {\n rpm: 200,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Provide a Twilio account SID, auth token, and verify the outbound sending numbers used by the integration.',\n },\n};\n\nexport function registerTwilioSmsIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(twilioSmsIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAA4C,CACvD,KAAM,CACJ,IAAK,aACL,QAAS,EACT,SAAU,MACV,YAAa,aACb,MAAO,mBACP,YACE,uEACF,OAAQ,iBACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,MAAO,YAAY,CAC1B,UAAW,EAAc,OAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,eAAgB,QAAS,EAAG,CAAC,CAChD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,SACN,YAAa,8CACd,CACF,CACF,CACD,QAAS,CACP,WAAY,eACb,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,aAAc,YAAY,CACrC,WAAY,CACV,WAAY,CACV,KAAM,SACN,YAAa,sBACd,CACD,UAAW,CACT,KAAM,SACN,YAAa,qBACd,CACF,CACF,CACD,QAAS,CACP,WAAY,mCACZ,UAAW,aACZ,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,sCACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,6GACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAyB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.d.ts","names":[],"sources":["../../../src/integrations/providers/vector-store.ts"],"sourcesContent":[],"mappings":";;;UAEiB,cAAA;;EAAA,MAAA,EAEP,eAFqB;EAErB,OAAA,CAAA,EACE,MADF,CAAA,MAAA,EAAA,OAAA,CAAA;EACE,SAAA,CAAA,EAAA,MAAA;EAEE,SAAA,CAAA,EAAA,IAAA;;AAGG,UAAA,mBAAA,CAAmB;EAMnB,UAAA,EAAA,MAAA;EAMA,SAAA,EAVJ,cAUqB,EAAA;EAUjB,WAAA,CAAA,EAAA,OAAkB;AAQnC;AACkB,UAzBD,mBAAA,CAyBC;EAAsB,UAAA,EAAA,MAAA;EACxB,GAAA,EAAA,MAAA,EAAA;EAA4B,SAAA,CAAA,EAAA,MAAA;;AAC1B,UArBD,iBAAA,CAqBC;EAAsB,UAAA,EAAA,MAAA;EAAO,MAAA,EAnBrC,eAmBqC;;;WAhBpC;;;;UAKM,kBAAA;;;YAGL;WACD;;;UAIM,mBAAA;kBACC,sBAAsB;gBACxB,oBAAoB,QAAQ;kBAC1B,sBAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"voice.d.ts","names":[],"sources":["../../../src/integrations/providers/voice.ts"],"sourcesContent":[],"mappings":";UAAiB,KAAA;EAAA,EAAA,EAAA,MAAK;EAUL,IAAA,EAAA,MAAA;EAYA,WAAA,CAAA,EAAA,MAAA;EAQA,QAAA,CAAA,EAAA,MAAa;EACN,MAAA,CAAA,EAAA,MAAA,GAAA,QAAA,GAAA,SAAA;EAAR,UAAA,CAAA,EAAA,MAAA;EACI,QAAA,CAAA,EAzBP,MAyBO,CAAA,MAAA,EAAA,MAAA,CAAA;;AAAsB,UAtBzB,mBAAA,CAsByB;EAAO,IAAA,EAAA,MAAA;;;;;;;;aAbpC;;UAGI,oBAAA;SACR;;;;;;UAOQ,aAAA;gBACD,QAAQ;oBACJ,sBAAsB,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","names":[],"sources":["../../src/integrations/runtime.ts"],"sourcesContent":[],"mappings":";;;;;;UASiB,wBAAA;;EAAA,gBAAA,EAAA,MAAA;EAMA,aAAA,EAAA,MAAA;AAgBjB;AAIY,UApBK,yBAAA,CAoBsB;EAEtB,QAAA,EAAA,MAAA;EAKT,KAAA,EAAA,MAAA;EACM,WAAA,CAAA,EAAA,MAAA;EACI,MAAA,CAAA,EAAA,MAAA;EAET,cAAA,EAAA,MAAA;EACE,kBAAA,EAAA,MAAA;EAAM,YAAA,EAAA,MAAA;EAGA,MAAA,EAAA,SAAA,GAAA,OAAsB;EAWtB,UAAA,CAAA,EAAA,MAAA;EAOA,SAAA,CAAA,EAAA,MAAA;EAER,YAAA,CAAA,EAAA,MAAA;EACC,UAAA,EA5CI,IA4CJ;EAIS,QAAA,CAAA,EA/CN,MA+CM,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,GAAA,OAAA,CAAA;;AAKF,UAjDA,2BAAA,CAiD2B;EAC9B,MAAA,CAAA,KAAA,EAjDE,yBAiDF,CAAA,EAjD8B,OAiD9B,CAAA,IAAA,CAAA,GAAA,IAAA;;AAKA,KAnDF,2BAAA,GAmDE,SAAA,GAAA,OAAA;AAAI,UAjDD,kBAAA,CAiDC;EAML,QAAA,EAAA,MAAA;EASwB,KAAA,EAAA,MAAA;EACxB,WAAA,CAAA,EAAA,MAAA;EAyBO,MAAA,CAAA,EAAA,MAAA;EAEF,IAAA,EAvFV,eAuFU;EACH,UAAA,EAvFD,qBAuFC;EACE,cAAA,EAvFC,cAuFD;EAAR,eAAA,EAAA,MAAA;EAC0B,KAAA,EAtF1B,wBAsF0B;EAAtB,MAAA,CAAA,EArFF,MAqFE,CAAA,MAAA,EAAA,OAAA,CAAA;;AAAD,UAlFK,sBAAA,CAkFL;EAkPI,QAAA,EAAA,MAAA;EASA,KAAA,EAAA,MAAA;;;;;;;;UAlUC,oBAAA;;;;;;UAOA;;SAER;UACC;;;;mBAIS;;;;UAKF,2BAAA;cACH;;;;0BAIY;cACZ;;cAMD,oBAAA;;;;;;;;8BASwB,0BACxB;0FAyBO,0CAEF,gCACH,2BACN,QAAQ,KACZ,QAAQ,sBAAsB;;;;;;;;;iBAkPnB,qBAAA,cAAmC;iBASnC,qBAAA,SAA8B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","names":["secretProvider: SecretProvider"],"sources":["../../src/integrations/runtime.ts"],"sourcesContent":["import { performance } from 'node:perf_hooks';\nimport type {\n ResolvedAppConfig,\n ResolvedIntegration,\n} from '../app-config/runtime';\nimport type { ConnectionStatus, IntegrationConnection } from './connection';\nimport type { IntegrationSpec } from './spec';\nimport type { SecretProvider, SecretValue } from './secrets/provider';\n\nexport interface IntegrationTraceMetadata {\n blueprintName: string;\n blueprintVersion: number;\n configVersion: number;\n}\n\nexport interface IntegrationTelemetryEvent {\n tenantId: string;\n appId: string;\n environment?: string;\n slotId?: string;\n integrationKey: string;\n integrationVersion: number;\n connectionId: string;\n status: 'success' | 'error';\n durationMs?: number;\n errorCode?: string;\n errorMessage?: string;\n occurredAt: Date;\n metadata?: Record<string, string | number | boolean>;\n}\n\nexport interface IntegrationTelemetryEmitter {\n record(event: IntegrationTelemetryEvent): Promise<void> | void;\n}\n\nexport type IntegrationInvocationStatus = 'success' | 'error';\n\nexport interface IntegrationContext {\n tenantId: string;\n appId: string;\n environment?: string;\n slotId?: string;\n spec: IntegrationSpec;\n connection: IntegrationConnection;\n secretProvider: SecretProvider;\n secretReference: string;\n trace: IntegrationTraceMetadata;\n config?: Record<string, unknown>;\n}\n\nexport interface IntegrationCallContext {\n tenantId: string;\n appId: string;\n environment?: string;\n blueprintName: string;\n blueprintVersion: number;\n configVersion: number;\n slotId: string;\n operation: string;\n}\n\nexport interface IntegrationCallError {\n code: string;\n message: string;\n retryable: boolean;\n cause?: unknown;\n}\n\nexport interface IntegrationCallResult<T> {\n success: boolean;\n data?: T;\n error?: IntegrationCallError;\n metadata: {\n latencyMs: number;\n connectionId: string;\n ownershipMode: IntegrationConnection['ownershipMode'];\n attempts: number;\n };\n}\n\nexport interface IntegrationCallGuardOptions {\n telemetry?: IntegrationTelemetryEmitter;\n maxAttempts?: number;\n backoffMs?: number;\n shouldRetry?: (error: unknown, attempt: number) => boolean;\n sleep?: (ms: number) => Promise<void>;\n now?: () => Date;\n}\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_BACKOFF_MS = 250;\n\nexport class IntegrationCallGuard {\n private readonly telemetry?: IntegrationTelemetryEmitter;\n private readonly maxAttempts: number;\n private readonly backoffMs: number;\n private readonly shouldRetry: (error: unknown, attempt: number) => boolean;\n private readonly sleep: (ms: number) => Promise<void>;\n private readonly now: () => Date;\n\n constructor(\n private readonly secretProvider: SecretProvider,\n options: IntegrationCallGuardOptions = {}\n ) {\n this.telemetry = options.telemetry;\n this.maxAttempts = Math.max(1, options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS);\n this.backoffMs = options.backoffMs ?? DEFAULT_BACKOFF_MS;\n this.shouldRetry =\n options.shouldRetry ??\n ((error: unknown) =>\n typeof error === 'object' &&\n error !== null &&\n 'retryable' in error &&\n Boolean((error as { retryable?: unknown }).retryable));\n this.sleep =\n options.sleep ??\n ((ms: number) =>\n ms <= 0\n ? Promise.resolve()\n : new Promise((resolve) => setTimeout(resolve, ms)));\n this.now = options.now ?? (() => new Date());\n }\n\n async executeWithGuards<T>(\n slotId: string,\n operation: string,\n input: unknown,\n resolvedConfig: ResolvedAppConfig,\n executor: (\n connection: IntegrationConnection,\n secrets: Record<string, string>\n ) => Promise<T>\n ): Promise<IntegrationCallResult<T>> {\n const integration = this.findIntegration(slotId, resolvedConfig);\n if (!integration) {\n return this.failure(\n {\n tenantId: resolvedConfig.tenantId,\n appId: resolvedConfig.appId,\n environment: resolvedConfig.environment,\n blueprintName: resolvedConfig.blueprintName,\n blueprintVersion: resolvedConfig.blueprintVersion,\n configVersion: resolvedConfig.configVersion,\n slotId,\n operation,\n },\n undefined,\n {\n code: 'SLOT_NOT_BOUND',\n message: `Integration slot \"${slotId}\" is not bound for tenant \"${resolvedConfig.tenantId}\".`,\n retryable: false,\n },\n 0\n );\n }\n\n const status = integration.connection.status;\n if (status === 'disconnected' || status === 'error') {\n return this.failure(\n this.makeContext(slotId, operation, resolvedConfig),\n integration,\n {\n code: 'CONNECTION_NOT_READY',\n message: `Integration connection \"${integration.connection.meta.label}\" is in status \"${status}\".`,\n retryable: false,\n },\n 0\n );\n }\n\n const secrets = await this.fetchSecrets(integration.connection);\n\n let attempt = 0;\n const started = performance.now();\n while (attempt < this.maxAttempts) {\n attempt += 1;\n try {\n const data = await executor(integration.connection, secrets);\n const duration = performance.now() - started;\n this.emitTelemetry(\n this.makeContext(slotId, operation, resolvedConfig),\n integration,\n 'success',\n duration\n );\n return {\n success: true,\n data,\n metadata: {\n latencyMs: duration,\n connectionId: integration.connection.meta.id,\n ownershipMode: integration.connection.ownershipMode,\n attempts: attempt,\n },\n };\n } catch (error) {\n const duration = performance.now() - started;\n this.emitTelemetry(\n this.makeContext(slotId, operation, resolvedConfig),\n integration,\n 'error',\n duration,\n this.errorCodeFor(error),\n error instanceof Error ? error.message : String(error)\n );\n const retryable = this.shouldRetry(error, attempt);\n if (!retryable || attempt >= this.maxAttempts) {\n return {\n success: false,\n error: {\n code: this.errorCodeFor(error),\n message: error instanceof Error ? error.message : String(error),\n retryable,\n cause: error,\n },\n metadata: {\n latencyMs: duration,\n connectionId: integration.connection.meta.id,\n ownershipMode: integration.connection.ownershipMode,\n attempts: attempt,\n },\n };\n }\n await this.sleep(this.backoffMs);\n }\n }\n\n // Should never reach here due to loop logic.\n return {\n success: false,\n error: {\n code: 'UNKNOWN_ERROR',\n message: 'Integration call failed after retries.',\n retryable: false,\n },\n metadata: {\n latencyMs: performance.now() - started,\n connectionId: integration.connection.meta.id,\n ownershipMode: integration.connection.ownershipMode,\n attempts: this.maxAttempts,\n },\n };\n }\n\n private findIntegration(\n slotId: string,\n config: ResolvedAppConfig\n ): ResolvedIntegration | undefined {\n return config.integrations.find(\n (integration) => integration.slot.slotId === slotId\n );\n }\n\n private async fetchSecrets(\n connection: IntegrationConnection\n ): Promise<Record<string, string>> {\n if (!this.secretProvider.canHandle(connection.secretRef)) {\n throw new Error(\n `Secret provider \"${this.secretProvider.id}\" cannot handle reference \"${connection.secretRef}\".`\n );\n }\n const secret = await this.secretProvider.getSecret(connection.secretRef);\n return this.parseSecret(secret);\n }\n\n private parseSecret(secret: SecretValue): Record<string, string> {\n const text = new TextDecoder().decode(secret.data);\n try {\n const parsed = JSON.parse(text);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n const entries = Object.entries(parsed).filter(\n ([, value]) =>\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n );\n return Object.fromEntries(\n entries.map(([key, value]) => [key, String(value)])\n );\n }\n } catch {\n // Fall through to raw secret.\n }\n return { secret: text };\n }\n\n private emitTelemetry(\n context: IntegrationCallContext,\n integration: ResolvedIntegration | undefined,\n status: 'success' | 'error',\n durationMs: number,\n errorCode?: string,\n errorMessage?: string\n ) {\n if (!this.telemetry || !integration) return;\n this.telemetry.record({\n tenantId: context.tenantId,\n appId: context.appId,\n environment: context.environment,\n slotId: context.slotId,\n integrationKey: integration.connection.meta.integrationKey,\n integrationVersion: integration.connection.meta.integrationVersion,\n connectionId: integration.connection.meta.id,\n status,\n durationMs,\n errorCode,\n errorMessage,\n occurredAt: this.now(),\n metadata: {\n blueprint: `${context.blueprintName}.v${context.blueprintVersion}`,\n configVersion: context.configVersion,\n operation: context.operation,\n },\n });\n }\n\n private failure<T>(\n context: IntegrationCallContext,\n integration: ResolvedIntegration | undefined,\n error: IntegrationCallError,\n attempts: number\n ): IntegrationCallResult<T> {\n if (integration) {\n this.emitTelemetry(\n context,\n integration,\n 'error',\n 0,\n error.code,\n error.message\n );\n }\n return {\n success: false,\n error,\n metadata: {\n latencyMs: 0,\n connectionId: integration?.connection.meta.id ?? 'unknown',\n ownershipMode: integration?.connection.ownershipMode ?? 'managed',\n attempts,\n },\n };\n }\n\n private makeContext(\n slotId: string,\n operation: string,\n config: ResolvedAppConfig\n ): IntegrationCallContext {\n return {\n tenantId: config.tenantId,\n appId: config.appId,\n environment: config.environment,\n blueprintName: config.blueprintName,\n blueprintVersion: config.blueprintVersion,\n configVersion: config.configVersion,\n slotId,\n operation,\n };\n }\n\n private errorCodeFor(error: unknown): string {\n if (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n typeof (error as { code?: unknown }).code === 'string'\n ) {\n return (error as { code: string }).code;\n }\n return 'PROVIDER_ERROR';\n }\n}\n\nexport function ensureConnectionReady(integration: ResolvedIntegration): void {\n const status = integration.connection.status;\n if (status === 'disconnected' || status === 'error') {\n throw new Error(\n `Integration connection \"${integration.connection.meta.label}\" is in status \"${status}\".`\n );\n }\n}\n\nexport function connectionStatusLabel(status: ConnectionStatus): string {\n switch (status) {\n case 'connected':\n return 'connected';\n case 'disconnected':\n return 'disconnected';\n case 'error':\n return 'error';\n case 'unknown':\n default:\n return 'unknown';\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-secret-provider.d.ts","names":[],"sources":["../../../src/integrations/secrets/env-secret-provider.ts"],"sourcesContent":[],"mappings":";;;UASU,wBAAA;;AAFU;AAgBpB;;;EAc6B,OAAA,CAAA,EAtBjB,MAsBiB,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;AAwCd,cAtDF,iBAAA,YAA6B,cAsD3B,CAAA;EACD,SAAA,EAAA,GAAA,KAAA;EACD,iBAAA,OAAA;EAAR,WAAA,CAAA,OAAA,CAAA,EAnDkB,wBAmDlB;EAI2B,SAAA,CAAA,SAAA,EAnDT,eAmDS,CAAA,EAAA,OAAA;EAAkB,SAAA,CAAA,SAAA,EA9CrB,eA8CqB,CAAA,EA9CH,OA8CG,CA9CK,WA8CL,CAAA;EA5DR,SAAA,CAAA,SAAA,EA+C3B,eA/C2B,EAAA,QAAA,EAgD5B,kBAhD4B,CAAA,EAiDrC,OAjDqC,CAiD7B,oBAjD6B,CAAA;EAAc,YAAA,CAAA,SAAA,EAsDzC,eAtDyC,EAAA,QAAA,EAuD1C,kBAvD0C,CAAA,EAwDnD,OAxDmD,CAwD3C,oBAxD2C,CAAA;0BA4DxB,kBAAkB"}
|