@lssm/lib.contracts 0.0.0-canary-20251120170226
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 +98 -0
- package/dist/app-config/branding.d.ts +56 -0
- package/dist/app-config/branding.d.ts.map +1 -0
- package/dist/app-config/branding.js +0 -0
- package/dist/app-config/contracts.d.ts +245 -0
- package/dist/app-config/contracts.d.ts.map +1 -0
- package/dist/app-config/contracts.js +2 -0
- package/dist/app-config/contracts.js.map +1 -0
- package/dist/app-config/events.d.ts +123 -0
- package/dist/app-config/events.d.ts.map +1 -0
- package/dist/app-config/events.js +2 -0
- package/dist/app-config/events.js.map +1 -0
- package/dist/app-config/index.d.ts +8 -0
- package/dist/app-config/index.js +1 -0
- package/dist/app-config/lifecycle-contracts.d.ts +383 -0
- package/dist/app-config/lifecycle-contracts.d.ts.map +1 -0
- package/dist/app-config/lifecycle-contracts.js +2 -0
- package/dist/app-config/lifecycle-contracts.js.map +1 -0
- package/dist/app-config/lifecycle.d.ts +28 -0
- package/dist/app-config/lifecycle.d.ts.map +1 -0
- package/dist/app-config/lifecycle.js +0 -0
- package/dist/app-config/runtime.d.ts +115 -0
- package/dist/app-config/runtime.d.ts.map +1 -0
- package/dist/app-config/runtime.js +2 -0
- package/dist/app-config/runtime.js.map +1 -0
- package/dist/app-config/spec.d.ts +176 -0
- package/dist/app-config/spec.d.ts.map +1 -0
- package/dist/app-config/spec.js +2 -0
- package/dist/app-config/spec.js.map +1 -0
- package/dist/app-config/validation.d.ts +48 -0
- package/dist/app-config/validation.d.ts.map +1 -0
- package/dist/app-config/validation.js +2 -0
- package/dist/app-config/validation.js.map +1 -0
- package/dist/capabilities/openbanking.d.ts +10 -0
- package/dist/capabilities/openbanking.d.ts.map +1 -0
- package/dist/capabilities/openbanking.js +2 -0
- package/dist/capabilities/openbanking.js.map +1 -0
- package/dist/capabilities.d.ts +45 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +2 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +1 -0
- package/dist/client/react/drivers/rn-reusables.d.ts +23 -0
- package/dist/client/react/drivers/rn-reusables.d.ts.map +1 -0
- package/dist/client/react/drivers/rn-reusables.js +2 -0
- package/dist/client/react/drivers/rn-reusables.js.map +1 -0
- package/dist/client/react/drivers/shadcn.d.ts +13 -0
- package/dist/client/react/drivers/shadcn.d.ts.map +1 -0
- package/dist/client/react/drivers/shadcn.js +2 -0
- package/dist/client/react/drivers/shadcn.js.map +1 -0
- package/dist/client/react/feature-render.d.ts +21 -0
- package/dist/client/react/feature-render.d.ts.map +1 -0
- package/dist/client/react/feature-render.js +2 -0
- package/dist/client/react/feature-render.js.map +1 -0
- package/dist/client/react/form-render.d.ts +92 -0
- package/dist/client/react/form-render.d.ts.map +1 -0
- package/dist/client/react/form-render.js +2 -0
- package/dist/client/react/form-render.js.map +1 -0
- package/dist/client/react/index.d.ts +5 -0
- package/dist/client/react/index.js +1 -0
- package/dist/contracts-adapter-hydration.d.ts +16 -0
- package/dist/contracts-adapter-hydration.d.ts.map +1 -0
- package/dist/contracts-adapter-hydration.js +2 -0
- package/dist/contracts-adapter-hydration.js.map +1 -0
- package/dist/contracts-adapter-input.d.ts +11 -0
- package/dist/contracts-adapter-input.d.ts.map +1 -0
- package/dist/contracts-adapter-input.js +2 -0
- package/dist/contracts-adapter-input.js.map +1 -0
- package/dist/data-views/query-generator.d.ts +40 -0
- package/dist/data-views/query-generator.d.ts.map +1 -0
- package/dist/data-views/query-generator.js +2 -0
- package/dist/data-views/query-generator.js.map +1 -0
- package/dist/data-views/runtime.d.ts +27 -0
- package/dist/data-views/runtime.d.ts.map +1 -0
- package/dist/data-views/runtime.js +2 -0
- package/dist/data-views/runtime.js.map +1 -0
- package/dist/data-views.d.ts +132 -0
- package/dist/data-views.d.ts.map +1 -0
- package/dist/data-views.js +2 -0
- package/dist/data-views.js.map +1 -0
- package/dist/events.d.ts +45 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/experiments/evaluator.d.ts +38 -0
- package/dist/experiments/evaluator.d.ts.map +1 -0
- package/dist/experiments/evaluator.js +2 -0
- package/dist/experiments/evaluator.js.map +1 -0
- package/dist/experiments/spec.d.ts +90 -0
- package/dist/experiments/spec.d.ts.map +1 -0
- package/dist/experiments/spec.js +2 -0
- package/dist/experiments/spec.js.map +1 -0
- package/dist/features.d.ts +88 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +2 -0
- package/dist/features.js.map +1 -0
- package/dist/forms.d.ts +259 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +2 -0
- package/dist/forms.js.map +1 -0
- package/dist/graphql-federation/dist/index.js +2 -0
- package/dist/graphql-federation/dist/index.js.map +1 -0
- package/dist/index.d.ts +129 -0
- package/dist/index.js +1 -0
- package/dist/install.d.ts +77 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +2 -0
- package/dist/install.js.map +1 -0
- package/dist/integrations/binding.d.ts +18 -0
- package/dist/integrations/binding.d.ts.map +1 -0
- package/dist/integrations/binding.js +0 -0
- package/dist/integrations/connection.d.ts +52 -0
- package/dist/integrations/connection.d.ts.map +1 -0
- package/dist/integrations/connection.js +0 -0
- package/dist/integrations/contracts.d.ts +436 -0
- package/dist/integrations/contracts.d.ts.map +1 -0
- package/dist/integrations/contracts.js +2 -0
- package/dist/integrations/contracts.js.map +1 -0
- package/dist/integrations/health.d.ts +22 -0
- package/dist/integrations/health.d.ts.map +1 -0
- package/dist/integrations/health.js +2 -0
- package/dist/integrations/health.js.map +1 -0
- package/dist/integrations/index.d.ts +53 -0
- package/dist/integrations/index.js +1 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts +288 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/accounts.js +2 -0
- package/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts +164 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/balances.js +2 -0
- package/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
- package/dist/integrations/openbanking/contracts/index.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/index.js +2 -0
- package/dist/integrations/openbanking/contracts/index.js.map +1 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts +212 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/transactions.js +2 -0
- package/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/integrations/openbanking/guards.d.ts +13 -0
- package/dist/integrations/openbanking/guards.d.ts.map +1 -0
- package/dist/integrations/openbanking/guards.js +2 -0
- package/dist/integrations/openbanking/guards.js.map +1 -0
- package/dist/integrations/openbanking/models.d.ts +229 -0
- package/dist/integrations/openbanking/models.d.ts.map +1 -0
- package/dist/integrations/openbanking/models.js +2 -0
- package/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/integrations/openbanking/telemetry.d.ts +16 -0
- package/dist/integrations/openbanking/telemetry.d.ts.map +1 -0
- package/dist/integrations/openbanking/telemetry.js +2 -0
- package/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/integrations/providers/calendar.d.ts +79 -0
- package/dist/integrations/providers/calendar.d.ts.map +1 -0
- package/dist/integrations/providers/calendar.js +0 -0
- package/dist/integrations/providers/elevenlabs.d.ts +8 -0
- package/dist/integrations/providers/elevenlabs.d.ts.map +1 -0
- package/dist/integrations/providers/elevenlabs.js +2 -0
- package/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/integrations/providers/email.d.ts +87 -0
- package/dist/integrations/providers/email.d.ts.map +1 -0
- package/dist/integrations/providers/email.js +0 -0
- package/dist/integrations/providers/embedding.d.ts +25 -0
- package/dist/integrations/providers/embedding.d.ts.map +1 -0
- package/dist/integrations/providers/embedding.js +0 -0
- package/dist/integrations/providers/gcs-storage.d.ts +8 -0
- package/dist/integrations/providers/gcs-storage.d.ts.map +1 -0
- package/dist/integrations/providers/gcs-storage.js +2 -0
- package/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/integrations/providers/gmail.d.ts +8 -0
- package/dist/integrations/providers/gmail.d.ts.map +1 -0
- package/dist/integrations/providers/gmail.js +2 -0
- package/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/integrations/providers/google-calendar.d.ts +8 -0
- package/dist/integrations/providers/google-calendar.d.ts.map +1 -0
- package/dist/integrations/providers/google-calendar.js +2 -0
- package/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +21 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +1 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js +2 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts +25 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gcs-storage.js +2 -0
- package/dist/integrations/providers/impls/gcs-storage.js.map +1 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +27 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gmail-inbound.js +2 -0
- package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +19 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gmail-outbound.js +7 -0
- package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts +24 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -0
- package/dist/integrations/providers/impls/google-calendar.js +2 -0
- package/dist/integrations/providers/impls/google-calendar.js.map +1 -0
- package/dist/integrations/providers/impls/index.d.ts +15 -0
- package/dist/integrations/providers/impls/index.js +1 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +24 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +1 -0
- package/dist/integrations/providers/impls/mistral-embedding.js +2 -0
- package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts +32 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts.map +1 -0
- package/dist/integrations/providers/impls/mistral-llm.js +2 -0
- package/dist/integrations/providers/impls/mistral-llm.js.map +1 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts +20 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts.map +1 -0
- package/dist/integrations/providers/impls/postmark-email.js +2 -0
- package/dist/integrations/providers/impls/postmark-email.js.map +1 -0
- package/dist/integrations/providers/impls/powens-client.d.ts +125 -0
- package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -0
- package/dist/integrations/providers/impls/powens-client.js +2 -0
- package/dist/integrations/providers/impls/powens-client.js.map +1 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +28 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -0
- package/dist/integrations/providers/impls/powens-openbanking.js +2 -0
- package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts +27 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -0
- package/dist/integrations/providers/impls/provider-factory.js +2 -0
- package/dist/integrations/providers/impls/provider-factory.js.map +1 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +25 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -0
- package/dist/integrations/providers/impls/qdrant-vector.js +2 -0
- package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts +29 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -0
- package/dist/integrations/providers/impls/stripe-payments.js +2 -0
- package/dist/integrations/providers/impls/stripe-payments.js.map +1 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts +21 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts.map +1 -0
- package/dist/integrations/providers/impls/twilio-sms.js +2 -0
- package/dist/integrations/providers/impls/twilio-sms.js.map +1 -0
- package/dist/integrations/providers/index.d.ts +36 -0
- package/dist/integrations/providers/index.js +1 -0
- package/dist/integrations/providers/llm.d.ts +83 -0
- package/dist/integrations/providers/llm.d.ts.map +1 -0
- package/dist/integrations/providers/llm.js +0 -0
- package/dist/integrations/providers/mistral.d.ts +8 -0
- package/dist/integrations/providers/mistral.d.ts.map +1 -0
- package/dist/integrations/providers/mistral.js +2 -0
- package/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/integrations/providers/openbanking.d.ts +129 -0
- package/dist/integrations/providers/openbanking.d.ts.map +1 -0
- package/dist/integrations/providers/openbanking.js +0 -0
- package/dist/integrations/providers/payments.d.ts +110 -0
- package/dist/integrations/providers/payments.d.ts.map +1 -0
- package/dist/integrations/providers/payments.js +0 -0
- package/dist/integrations/providers/postmark.d.ts +8 -0
- package/dist/integrations/providers/postmark.d.ts.map +1 -0
- package/dist/integrations/providers/postmark.js +2 -0
- package/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/integrations/providers/powens.d.ts +8 -0
- package/dist/integrations/providers/powens.d.ts.map +1 -0
- package/dist/integrations/providers/powens.js +2 -0
- package/dist/integrations/providers/powens.js.map +1 -0
- package/dist/integrations/providers/qdrant.d.ts +8 -0
- package/dist/integrations/providers/qdrant.d.ts.map +1 -0
- package/dist/integrations/providers/qdrant.js +2 -0
- package/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/integrations/providers/sms.d.ts +35 -0
- package/dist/integrations/providers/sms.d.ts.map +1 -0
- package/dist/integrations/providers/sms.js +0 -0
- package/dist/integrations/providers/storage.d.ts +61 -0
- package/dist/integrations/providers/storage.d.ts.map +1 -0
- package/dist/integrations/providers/storage.js +0 -0
- package/dist/integrations/providers/stripe.d.ts +8 -0
- package/dist/integrations/providers/stripe.d.ts.map +1 -0
- package/dist/integrations/providers/stripe.js +2 -0
- package/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/integrations/providers/twilio-sms.d.ts +8 -0
- package/dist/integrations/providers/twilio-sms.d.ts.map +1 -0
- package/dist/integrations/providers/twilio-sms.js +2 -0
- package/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/integrations/providers/vector-store.d.ts +44 -0
- package/dist/integrations/providers/vector-store.d.ts.map +1 -0
- package/dist/integrations/providers/vector-store.js +0 -0
- package/dist/integrations/providers/voice.d.ts +35 -0
- package/dist/integrations/providers/voice.d.ts.map +1 -0
- package/dist/integrations/providers/voice.js +0 -0
- package/dist/integrations/runtime.d.ts +100 -0
- package/dist/integrations/runtime.d.ts.map +1 -0
- package/dist/integrations/runtime.js +2 -0
- package/dist/integrations/runtime.js.map +1 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts +32 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +1 -0
- package/dist/integrations/secrets/env-secret-provider.js +2 -0
- package/dist/integrations/secrets/env-secret-provider.js.map +1 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +33 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -0
- package/dist/integrations/secrets/gcp-secret-manager.js +2 -0
- package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -0
- package/dist/integrations/secrets/index.d.ts +5 -0
- package/dist/integrations/secrets/index.js +1 -0
- package/dist/integrations/secrets/manager.d.ts +48 -0
- package/dist/integrations/secrets/manager.d.ts.map +1 -0
- package/dist/integrations/secrets/manager.js +2 -0
- package/dist/integrations/secrets/manager.js.map +1 -0
- package/dist/integrations/secrets/provider.d.ts +53 -0
- package/dist/integrations/secrets/provider.d.ts.map +1 -0
- package/dist/integrations/secrets/provider.js +2 -0
- package/dist/integrations/secrets/provider.js.map +1 -0
- package/dist/integrations/spec.d.ts +80 -0
- package/dist/integrations/spec.d.ts.map +1 -0
- package/dist/integrations/spec.js +2 -0
- package/dist/integrations/spec.js.map +1 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts +42 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +1 -0
- package/dist/jobs/gcp-cloud-tasks.js +2 -0
- package/dist/jobs/gcp-cloud-tasks.js.map +1 -0
- package/dist/jobs/gcp-pubsub.d.ts +26 -0
- package/dist/jobs/gcp-pubsub.d.ts.map +1 -0
- package/dist/jobs/gcp-pubsub.js +2 -0
- package/dist/jobs/gcp-pubsub.js.map +1 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +10 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +1 -0
- package/dist/jobs/handlers/gmail-sync-handler.js +2 -0
- package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -0
- package/dist/jobs/handlers/index.d.ts +3 -0
- package/dist/jobs/handlers/index.js +1 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts +13 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +1 -0
- package/dist/jobs/handlers/storage-document-handler.js +2 -0
- package/dist/jobs/handlers/storage-document-handler.js.map +1 -0
- package/dist/jobs/index.d.ts +7 -0
- package/dist/jobs/index.js +1 -0
- package/dist/jobs/memory-queue.d.ts +19 -0
- package/dist/jobs/memory-queue.d.ts.map +1 -0
- package/dist/jobs/memory-queue.js +2 -0
- package/dist/jobs/memory-queue.js.map +1 -0
- package/dist/jobs/queue.d.ts +27 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +0 -0
- package/dist/jsonschema.d.ts +27 -0
- package/dist/jsonschema.d.ts.map +1 -0
- package/dist/jsonschema.js +2 -0
- package/dist/jsonschema.js.map +1 -0
- package/dist/knowledge/binding.d.ts +26 -0
- package/dist/knowledge/binding.d.ts.map +1 -0
- package/dist/knowledge/binding.js +0 -0
- package/dist/knowledge/contracts.d.ts +317 -0
- package/dist/knowledge/contracts.d.ts.map +1 -0
- package/dist/knowledge/contracts.js +2 -0
- package/dist/knowledge/contracts.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.js +1 -0
- package/dist/knowledge/ingestion/document-processor.d.ts +25 -0
- package/dist/knowledge/ingestion/document-processor.d.ts.map +1 -0
- package/dist/knowledge/ingestion/document-processor.js +2 -0
- package/dist/knowledge/ingestion/document-processor.js.map +1 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts +13 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -0
- package/dist/knowledge/ingestion/embedding-service.js +2 -0
- package/dist/knowledge/ingestion/embedding-service.js.map +1 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +19 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -0
- package/dist/knowledge/ingestion/gmail-adapter.js +7 -0
- package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -0
- package/dist/knowledge/ingestion/index.d.ts +6 -0
- package/dist/knowledge/ingestion/index.js +1 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts +16 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +1 -0
- package/dist/knowledge/ingestion/storage-adapter.js +2 -0
- package/dist/knowledge/ingestion/storage-adapter.js.map +1 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts +19 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +1 -0
- package/dist/knowledge/ingestion/vector-indexer.js +2 -0
- package/dist/knowledge/ingestion/vector-indexer.js.map +1 -0
- package/dist/knowledge/query/index.d.ts +2 -0
- package/dist/knowledge/query/index.js +1 -0
- package/dist/knowledge/query/service.d.ts +30 -0
- package/dist/knowledge/query/service.d.ts.map +1 -0
- package/dist/knowledge/query/service.js +4 -0
- package/dist/knowledge/query/service.js.map +1 -0
- package/dist/knowledge/runtime.d.ts +33 -0
- package/dist/knowledge/runtime.d.ts.map +1 -0
- package/dist/knowledge/runtime.js +2 -0
- package/dist/knowledge/runtime.js.map +1 -0
- package/dist/knowledge/source.d.ts +33 -0
- package/dist/knowledge/source.d.ts.map +1 -0
- package/dist/knowledge/source.js +0 -0
- package/dist/knowledge/spaces/email-threads.d.ts +8 -0
- package/dist/knowledge/spaces/email-threads.d.ts.map +1 -0
- package/dist/knowledge/spaces/email-threads.js +2 -0
- package/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/knowledge/spaces/financial-docs.d.ts +8 -0
- package/dist/knowledge/spaces/financial-docs.d.ts.map +1 -0
- package/dist/knowledge/spaces/financial-docs.js +2 -0
- package/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/knowledge/spaces/financial-overview.d.ts +8 -0
- package/dist/knowledge/spaces/financial-overview.d.ts.map +1 -0
- package/dist/knowledge/spaces/financial-overview.js +2 -0
- package/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/knowledge/spaces/index.d.ts +7 -0
- package/dist/knowledge/spaces/index.js +1 -0
- package/dist/knowledge/spaces/product-canon.d.ts +8 -0
- package/dist/knowledge/spaces/product-canon.d.ts.map +1 -0
- package/dist/knowledge/spaces/product-canon.js +2 -0
- package/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/knowledge/spaces/support-faq.d.ts +8 -0
- package/dist/knowledge/spaces/support-faq.d.ts.map +1 -0
- package/dist/knowledge/spaces/support-faq.js +2 -0
- package/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts +8 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +1 -0
- package/dist/knowledge/spaces/uploaded-docs.js +2 -0
- package/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/knowledge/spec.d.ts +53 -0
- package/dist/knowledge/spec.d.ts.map +1 -0
- package/dist/knowledge/spec.js +2 -0
- package/dist/knowledge/spec.js.map +1 -0
- package/dist/markdown.d.ts +22 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +4 -0
- package/dist/markdown.js.map +1 -0
- package/dist/migrations.d.ts +53 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +2 -0
- package/dist/migrations.js.map +1 -0
- package/dist/onboarding-base.d.ts +138 -0
- package/dist/onboarding-base.d.ts.map +1 -0
- package/dist/onboarding-base.js +2 -0
- package/dist/onboarding-base.js.map +1 -0
- package/dist/ownership.d.ts +76 -0
- package/dist/ownership.d.ts.map +1 -0
- package/dist/ownership.js +2 -0
- package/dist/ownership.js.map +1 -0
- package/dist/policy/engine.d.ts +40 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +2 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/opa-adapter.d.ts +46 -0
- package/dist/policy/opa-adapter.d.ts.map +1 -0
- package/dist/policy/opa-adapter.js +2 -0
- package/dist/policy/opa-adapter.js.map +1 -0
- package/dist/policy/spec.d.ts +115 -0
- package/dist/policy/spec.d.ts.map +1 -0
- package/dist/policy/spec.js +2 -0
- package/dist/policy/spec.js.map +1 -0
- package/dist/presentations.backcompat.d.ts +8 -0
- package/dist/presentations.backcompat.d.ts.map +1 -0
- package/dist/presentations.backcompat.js +2 -0
- package/dist/presentations.backcompat.js.map +1 -0
- package/dist/presentations.d.ts +97 -0
- package/dist/presentations.d.ts.map +1 -0
- package/dist/presentations.js +2 -0
- package/dist/presentations.js.map +1 -0
- package/dist/presentations.v2.d.ts +96 -0
- package/dist/presentations.v2.d.ts.map +1 -0
- package/dist/presentations.v2.js +2 -0
- package/dist/presentations.v2.js.map +1 -0
- package/dist/prompt.d.ts +61 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +2 -0
- package/dist/prompt.js.map +1 -0
- package/dist/promptRegistry.d.ts +16 -0
- package/dist/promptRegistry.d.ts.map +1 -0
- package/dist/promptRegistry.js +2 -0
- package/dist/promptRegistry.js.map +1 -0
- package/dist/regenerator/adapters.d.ts +20 -0
- package/dist/regenerator/adapters.d.ts.map +1 -0
- package/dist/regenerator/adapters.js +0 -0
- package/dist/regenerator/executor.d.ts +71 -0
- package/dist/regenerator/executor.d.ts.map +1 -0
- package/dist/regenerator/executor.js +2 -0
- package/dist/regenerator/executor.js.map +1 -0
- package/dist/regenerator/index.d.ts +7 -0
- package/dist/regenerator/index.js +1 -0
- package/dist/regenerator/service.d.ts +34 -0
- package/dist/regenerator/service.d.ts.map +1 -0
- package/dist/regenerator/service.js +2 -0
- package/dist/regenerator/service.js.map +1 -0
- package/dist/regenerator/sinks.d.ts +27 -0
- package/dist/regenerator/sinks.d.ts.map +1 -0
- package/dist/regenerator/sinks.js +2 -0
- package/dist/regenerator/sinks.js.map +1 -0
- package/dist/regenerator/types.d.ts +108 -0
- package/dist/regenerator/types.d.ts.map +1 -0
- package/dist/regenerator/types.js +0 -0
- package/dist/regenerator/utils.d.ts +10 -0
- package/dist/regenerator/utils.d.ts.map +1 -0
- package/dist/regenerator/utils.js +2 -0
- package/dist/regenerator/utils.js.map +1 -0
- package/dist/registry.d.ts +73 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -0
- package/dist/resources.d.ts +65 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +2 -0
- package/dist/resources.js.map +1 -0
- package/dist/schema/dist/EnumType.js +1 -0
- package/dist/schema/dist/FieldType.js +2 -0
- package/dist/schema/dist/FieldType.js.map +1 -0
- package/dist/schema/dist/ScalarTypeEnum.js +2 -0
- package/dist/schema/dist/ScalarTypeEnum.js.map +1 -0
- package/dist/schema/dist/SchemaModel.js +2 -0
- package/dist/schema/dist/SchemaModel.js.map +1 -0
- package/dist/schema/dist/index.js +1 -0
- package/dist/server/graphql-pothos.d.ts +32 -0
- package/dist/server/graphql-pothos.d.ts.map +1 -0
- package/dist/server/graphql-pothos.js +2 -0
- package/dist/server/graphql-pothos.js.map +1 -0
- package/dist/server/graphql-schema-export.d.ts +7 -0
- package/dist/server/graphql-schema-export.d.ts.map +1 -0
- package/dist/server/graphql-schema-export.js +2 -0
- package/dist/server/graphql-schema-export.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +1 -0
- package/dist/server/provider-mcp.d.ts +52 -0
- package/dist/server/provider-mcp.d.ts.map +1 -0
- package/dist/server/provider-mcp.js +2 -0
- package/dist/server/provider-mcp.js.map +1 -0
- package/dist/server/rest-elysia.d.ts +41 -0
- package/dist/server/rest-elysia.d.ts.map +1 -0
- package/dist/server/rest-elysia.js +2 -0
- package/dist/server/rest-elysia.js.map +1 -0
- package/dist/server/rest-express.d.ts +17 -0
- package/dist/server/rest-express.d.ts.map +1 -0
- package/dist/server/rest-express.js +2 -0
- package/dist/server/rest-express.js.map +1 -0
- package/dist/server/rest-generic.d.ts +33 -0
- package/dist/server/rest-generic.d.ts.map +1 -0
- package/dist/server/rest-generic.js +2 -0
- package/dist/server/rest-generic.js.map +1 -0
- package/dist/server/rest-next-app.d.ts +36 -0
- package/dist/server/rest-next-app.d.ts.map +1 -0
- package/dist/server/rest-next-app.js +2 -0
- package/dist/server/rest-next-app.js.map +1 -0
- package/dist/server/rest-next-mcp.d.ts +12 -0
- package/dist/server/rest-next-mcp.d.ts.map +1 -0
- package/dist/server/rest-next-mcp.js +2 -0
- package/dist/server/rest-next-mcp.js.map +1 -0
- package/dist/server/rest-next-pages.d.ts +10 -0
- package/dist/server/rest-next-pages.d.ts.map +1 -0
- package/dist/server/rest-next-pages.js +2 -0
- package/dist/server/rest-next-pages.js.map +1 -0
- package/dist/spec.d.ts +172 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +2 -0
- package/dist/spec.js.map +1 -0
- package/dist/telemetry/anomaly.d.ts +28 -0
- package/dist/telemetry/anomaly.d.ts.map +1 -0
- package/dist/telemetry/anomaly.js +2 -0
- package/dist/telemetry/anomaly.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.js +1 -0
- package/dist/telemetry/spec.d.ts +99 -0
- package/dist/telemetry/spec.d.ts.map +1 -0
- package/dist/telemetry/spec.js +2 -0
- package/dist/telemetry/spec.js.map +1 -0
- package/dist/telemetry/tracker.d.ts +52 -0
- package/dist/telemetry/tracker.d.ts.map +1 -0
- package/dist/telemetry/tracker.js +2 -0
- package/dist/telemetry/tracker.js.map +1 -0
- package/dist/tests/index.d.ts +3 -0
- package/dist/tests/index.js +1 -0
- package/dist/tests/runner.d.ts +44 -0
- package/dist/tests/runner.d.ts.map +1 -0
- package/dist/tests/runner.js +2 -0
- package/dist/tests/runner.js.map +1 -0
- package/dist/tests/spec.d.ts +90 -0
- package/dist/tests/spec.d.ts.map +1 -0
- package/dist/tests/spec.js +2 -0
- package/dist/tests/spec.js.map +1 -0
- package/dist/themes.d.ts +56 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +2 -0
- package/dist/themes.js.map +1 -0
- package/dist/translations/catalog.d.ts +29 -0
- package/dist/translations/catalog.d.ts.map +1 -0
- package/dist/translations/catalog.js +0 -0
- package/dist/translations/tenant.d.ts +16 -0
- package/dist/translations/tenant.d.ts.map +1 -0
- package/dist/translations/tenant.js +0 -0
- package/dist/types/all.d.ts +60 -0
- package/dist/types/all.js +0 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/workflow/adapters/db-adapter.d.ts +35 -0
- package/dist/workflow/adapters/db-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/db-adapter.js +2 -0
- package/dist/workflow/adapters/db-adapter.js.map +1 -0
- package/dist/workflow/adapters/file-adapter.d.ts +15 -0
- package/dist/workflow/adapters/file-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/file-adapter.js +2 -0
- package/dist/workflow/adapters/file-adapter.js.map +1 -0
- package/dist/workflow/adapters/index.d.ts +4 -0
- package/dist/workflow/adapters/index.js +1 -0
- package/dist/workflow/adapters/memory-store.d.ts +19 -0
- package/dist/workflow/adapters/memory-store.d.ts.map +1 -0
- package/dist/workflow/adapters/memory-store.js +2 -0
- package/dist/workflow/adapters/memory-store.js.map +1 -0
- package/dist/workflow/expression.d.ts +10 -0
- package/dist/workflow/expression.d.ts.map +1 -0
- package/dist/workflow/expression.js +2 -0
- package/dist/workflow/expression.js.map +1 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.js +1 -0
- package/dist/workflow/runner.d.ts +75 -0
- package/dist/workflow/runner.d.ts.map +1 -0
- package/dist/workflow/runner.js +2 -0
- package/dist/workflow/runner.js.map +1 -0
- package/dist/workflow/sla-monitor.d.ts +21 -0
- package/dist/workflow/sla-monitor.d.ts.map +1 -0
- package/dist/workflow/sla-monitor.js +2 -0
- package/dist/workflow/sla-monitor.js.map +1 -0
- package/dist/workflow/spec.d.ts +100 -0
- package/dist/workflow/spec.d.ts.map +1 -0
- package/dist/workflow/spec.js +2 -0
- package/dist/workflow/spec.js.map +1 -0
- package/dist/workflow/state.d.ts +36 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +0 -0
- package/dist/workflow/validation.d.ts +29 -0
- package/dist/workflow/validation.d.ts.map +1 -0
- package/dist/workflow/validation.js +2 -0
- package/dist/workflow/validation.js.map +1 -0
- package/package.json +403 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IntegrationSpec, IntegrationSpecRegistry } from "../spec.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/providers/elevenlabs.d.ts
|
|
4
|
+
declare const elevenLabsIntegrationSpec: IntegrationSpec;
|
|
5
|
+
declare function registerElevenLabsIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { elevenLabsIntegrationSpec, registerElevenLabsIntegration };
|
|
8
|
+
//# sourceMappingURL=elevenlabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs.d.ts","names":[],"sources":["../../../src/integrations/providers/elevenlabs.ts"],"sourcesContent":[],"mappings":";;;cAGa,2BAA2B;iBA+DxB,6BAAA,WACJ,0BACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{StabilityEnum as e}from"../../ownership.js";const t={meta:{key:`ai-voice.elevenlabs`,version:1,category:`ai-voice`,displayName:`ElevenLabs Voice`,title:`ElevenLabs Text-to-Speech`,description:`ElevenLabs integration for neural voice synthesis and voice catalog access.`,domain:`ai`,owners:[`platform.ai`],tags:[`voice`,`tts`],stability:e.Beta},supportedModes:[`managed`,`byok`],capabilities:{provides:[{key:`ai.voice.synthesis`,version:1}]},configSchema:{schema:{type:`object`,properties:{defaultVoiceId:{type:`string`,description:`Optional default voice identifier for synthesis requests.`}}},example:{defaultVoiceId:`pNInz6obpgDQGcFmaJgB`}},secretSchema:{schema:{type:`object`,required:[`apiKey`],properties:{apiKey:{type:`string`,description:`ElevenLabs API key with text-to-speech permissions.`}}},example:{apiKey:`eleven-***`}},healthCheck:{method:`custom`,timeoutMs:4e3},docsUrl:`https://elevenlabs.io/docs/api-reference/text-to-speech`,constraints:{rateLimit:{rpm:120}},byokSetup:{setupInstructions:`Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope.`}};function n(e){return e.register(t)}export{t as elevenLabsIntegrationSpec,n as registerElevenLabsIntegration};
|
|
2
|
+
//# sourceMappingURL=elevenlabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs.js","names":["elevenLabsIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/elevenlabs.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const elevenLabsIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'ai-voice.elevenlabs',\n version: 1,\n category: 'ai-voice',\n displayName: 'ElevenLabs Voice',\n title: 'ElevenLabs Text-to-Speech',\n description:\n 'ElevenLabs integration for neural voice synthesis and voice catalog access.',\n domain: 'ai',\n owners: ['platform.ai'],\n tags: ['voice', 'tts'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'ai.voice.synthesis', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n defaultVoiceId: {\n type: 'string',\n description: 'Optional default voice identifier for synthesis requests.',\n },\n },\n },\n example: {\n defaultVoiceId: 'pNInz6obpgDQGcFmaJgB',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['apiKey'],\n properties: {\n apiKey: {\n type: 'string',\n description: 'ElevenLabs API key with text-to-speech permissions.',\n },\n },\n },\n example: {\n apiKey: 'eleven-***',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://elevenlabs.io/docs/api-reference/text-to-speech',\n constraints: {\n rateLimit: {\n rpm: 120,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope.',\n },\n};\n\nexport function registerElevenLabsIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(elevenLabsIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAA6C,CACxD,KAAM,CACJ,IAAK,sBACL,QAAS,EACT,SAAU,WACV,YAAa,mBACb,MAAO,4BACP,YACE,8EACF,OAAQ,KACR,OAAQ,CAAC,cAAc,CACvB,KAAM,CAAC,QAAS,MAAM,CACtB,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,qBAAsB,QAAS,EAAG,CAAC,CACtD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,eAAgB,CACd,KAAM,SACN,YAAa,4DACd,CACF,CACF,CACD,QAAS,CACP,eAAgB,uBACjB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,sDACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,aACT,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,0DACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,8FACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA0B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//#region src/integrations/providers/email.d.ts
|
|
2
|
+
interface EmailAddress {
|
|
3
|
+
email: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
}
|
|
6
|
+
interface EmailAttachment {
|
|
7
|
+
id: string;
|
|
8
|
+
filename: string;
|
|
9
|
+
contentType: string;
|
|
10
|
+
sizeBytes?: number;
|
|
11
|
+
data?: Uint8Array;
|
|
12
|
+
downloadUrl?: string;
|
|
13
|
+
}
|
|
14
|
+
interface EmailOutboundMessage {
|
|
15
|
+
from: EmailAddress;
|
|
16
|
+
to: EmailAddress[];
|
|
17
|
+
cc?: EmailAddress[];
|
|
18
|
+
bcc?: EmailAddress[];
|
|
19
|
+
replyTo?: EmailAddress;
|
|
20
|
+
subject: string;
|
|
21
|
+
textBody?: string;
|
|
22
|
+
htmlBody?: string;
|
|
23
|
+
headers?: Record<string, string>;
|
|
24
|
+
attachments?: EmailAttachment[];
|
|
25
|
+
metadata?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
interface EmailOutboundResult {
|
|
28
|
+
id: string;
|
|
29
|
+
providerMessageId?: string;
|
|
30
|
+
queuedAt?: Date;
|
|
31
|
+
deliveredAt?: Date;
|
|
32
|
+
}
|
|
33
|
+
interface EmailThread {
|
|
34
|
+
id: string;
|
|
35
|
+
subject?: string;
|
|
36
|
+
snippet?: string;
|
|
37
|
+
participants: EmailAddress[];
|
|
38
|
+
messages: EmailMessage[];
|
|
39
|
+
updatedAt: Date;
|
|
40
|
+
labels?: string[];
|
|
41
|
+
metadata?: Record<string, string>;
|
|
42
|
+
}
|
|
43
|
+
interface EmailMessage {
|
|
44
|
+
id: string;
|
|
45
|
+
threadId: string;
|
|
46
|
+
subject?: string;
|
|
47
|
+
from: EmailAddress;
|
|
48
|
+
to: EmailAddress[];
|
|
49
|
+
cc?: EmailAddress[];
|
|
50
|
+
bcc?: EmailAddress[];
|
|
51
|
+
replyTo?: EmailAddress;
|
|
52
|
+
sentAt: Date;
|
|
53
|
+
receivedAt?: Date;
|
|
54
|
+
textBody?: string;
|
|
55
|
+
htmlBody?: string;
|
|
56
|
+
attachments?: EmailAttachment[];
|
|
57
|
+
headers?: Record<string, string>;
|
|
58
|
+
metadata?: Record<string, string>;
|
|
59
|
+
}
|
|
60
|
+
interface EmailThreadListQuery {
|
|
61
|
+
label?: string;
|
|
62
|
+
query?: string;
|
|
63
|
+
pageSize?: number;
|
|
64
|
+
pageToken?: string;
|
|
65
|
+
includeArchived?: boolean;
|
|
66
|
+
updatedSince?: Date;
|
|
67
|
+
}
|
|
68
|
+
interface EmailMessagesSinceQuery {
|
|
69
|
+
label?: string;
|
|
70
|
+
since?: Date;
|
|
71
|
+
pageSize?: number;
|
|
72
|
+
pageToken?: string;
|
|
73
|
+
}
|
|
74
|
+
interface EmailOutboundProvider {
|
|
75
|
+
sendEmail(message: EmailOutboundMessage): Promise<EmailOutboundResult>;
|
|
76
|
+
}
|
|
77
|
+
interface EmailInboundProvider {
|
|
78
|
+
listThreads(query?: EmailThreadListQuery): Promise<EmailThread[]>;
|
|
79
|
+
getThread(threadId: string): Promise<EmailThread | null>;
|
|
80
|
+
listMessagesSince(query: EmailMessagesSinceQuery): Promise<{
|
|
81
|
+
messages: EmailMessage[];
|
|
82
|
+
nextPageToken?: string;
|
|
83
|
+
}>;
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { EmailAddress, EmailAttachment, EmailInboundProvider, EmailMessage, EmailMessagesSinceQuery, EmailOutboundMessage, EmailOutboundProvider, EmailOutboundResult, EmailThread, EmailThreadListQuery };
|
|
87
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","names":[],"sources":["../../../src/integrations/providers/email.ts"],"sourcesContent":[],"mappings":";UAAiB,YAAA;EAAA,KAAA,EAAA,MAAA;EAKA,IAAA,CAAA,EAAA,MAAA;AASjB;AACQ,UAVS,eAAA,CAUT;EACF,EAAA,EAAA,MAAA;EACC,QAAA,EAAA,MAAA;EACC,WAAA,EAAA,MAAA;EACI,SAAA,CAAA,EAAA,MAAA;EAIA,IAAA,CAAA,EAbH,UAaG;EACI,WAAA,CAAA,EAAA,MAAA;;AACG,UAXF,oBAAA,CAWE;EAGF,IAAA,EAbT,YAaS;EAOA,EAAA,EAnBX,YAmBsB,EAAA;EAIZ,EAAA,CAAA,EAtBT,YAsBS,EAAA;EACJ,GAAA,CAAA,EAtBJ,YAsBI,EAAA;EACC,OAAA,CAAA,EAtBD,YAsBC;EAEA,OAAA,EAAA,MAAA;EAAM,QAAA,CAAA,EAAA,MAAA;EAGF,QAAA,CAAA,EAAA,MAAY;EAIrB,OAAA,CAAA,EA3BI,MA2BJ,CAAA,MAAA,EAAA,MAAA,CAAA;EACF,WAAA,CAAA,EA3BU,eA2BV,EAAA;EACC,QAAA,CAAA,EA3BM,MA2BN,CAAA,MAAA,EAAA,MAAA,CAAA;;AAEK,UA1BK,mBAAA,CA0BL;EACF,EAAA,EAAA,MAAA;EACK,iBAAA,CAAA,EAAA,MAAA;EAGC,QAAA,CAAA,EA5BH,IA4BG;EACJ,WAAA,CAAA,EA5BI,IA4BJ;;AACO,UA1BF,WAAA,CA0BE;EAGF,EAAA,EAAA,MAAA;EASA,OAAA,CAAA,EAAA,MAAA;EAOA,OAAA,CAAA,EAAA,MAAA;EACI,YAAA,EA1CL,YA0CK,EAAA;EAA+B,QAAA,EAzCxC,YAyCwC,EAAA;EAAR,SAAA,EAxC/B,IAwC+B;EAAO,MAAA,CAAA,EAAA,MAAA,EAAA;EAGlC,QAAA,CAAA,EAzCJ,MAyCI,CAAA,MAAoB,EAAA,MAAA,CAAA;;AACgB,UAvCpC,YAAA,CAuCoC;EAAR,EAAA,EAAA,MAAA;EACN,QAAA,EAAA,MAAA;EAAR,OAAA,CAAA,EAAA,MAAA;EAEpB,IAAA,EAtCH,YAsCG;EACc,EAAA,EAtCnB,YAsCmB,EAAA;EAApB,EAAA,CAAA,EArCE,YAqCF,EAAA;EAAO,GAAA,CAAA,EApCJ,YAoCI,EAAA;YAnCA;UACF;eACK;;;gBAGC;YACJ;aACC;;UAGI,oBAAA;;;;;;iBAMA;;UAGA,uBAAA;;UAEP;;;;UAKO,qBAAA;qBACI,uBAAuB,QAAQ;;UAGnC,oBAAA;sBACK,uBAAuB,QAAQ;+BACtB,QAAQ;2BAE5B,0BACN;cAAoB"}
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/integrations/providers/embedding.d.ts
|
|
2
|
+
type EmbeddingVector = number[];
|
|
3
|
+
interface EmbeddingDocument {
|
|
4
|
+
id: string;
|
|
5
|
+
text: string;
|
|
6
|
+
metadata?: Record<string, string | number | boolean>;
|
|
7
|
+
}
|
|
8
|
+
interface EmbeddingResult {
|
|
9
|
+
id: string;
|
|
10
|
+
vector: EmbeddingVector;
|
|
11
|
+
dimensions: number;
|
|
12
|
+
model: string;
|
|
13
|
+
metadata?: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
interface EmbeddingProvider {
|
|
16
|
+
embedDocuments(documents: EmbeddingDocument[], options?: {
|
|
17
|
+
model?: string;
|
|
18
|
+
}): Promise<EmbeddingResult[]>;
|
|
19
|
+
embedQuery(query: string, options?: {
|
|
20
|
+
model?: string;
|
|
21
|
+
}): Promise<EmbeddingResult>;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { EmbeddingDocument, EmbeddingProvider, EmbeddingResult, EmbeddingVector };
|
|
25
|
+
//# sourceMappingURL=embedding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.d.ts","names":[],"sources":["../../../src/integrations/providers/embedding.ts"],"sourcesContent":[],"mappings":";KAAY,eAAA;AAAA,UAEK,iBAAA,CAFU;EAEV,EAAA,EAAA,MAAA;EAMA,IAAA,EAAA,MAAA;EAQA,QAAA,CAAA,EAXJ,MAWI,CAAA,MAAiB,EAAA,MAAA,GAAA,MAAA,GAAA,OAAA,CAAA;;AAIrB,UAZI,eAAA,CAYJ;EAAR,EAAA,EAAA,MAAA;EAIQ,MAAA,EAdH,eAcG;EAAR,UAAA,EAAA,MAAA;EAAO,KAAA,EAAA,MAAA;aAXC;;UAGI,iBAAA;4BAEF;;MAEV,QAAQ;;;MAIR,QAAQ"}
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IntegrationSpec, IntegrationSpecRegistry } from "../spec.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/providers/gcs-storage.d.ts
|
|
4
|
+
declare const gcsStorageIntegrationSpec: IntegrationSpec;
|
|
5
|
+
declare function registerGcsStorageIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { gcsStorageIntegrationSpec, registerGcsStorageIntegration };
|
|
8
|
+
//# sourceMappingURL=gcs-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcs-storage.d.ts","names":[],"sources":["../../../src/integrations/providers/gcs-storage.ts"],"sourcesContent":[],"mappings":";;;cAGa,2BAA2B;iBA2ExB,6BAAA,WACJ,0BACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{StabilityEnum as e}from"../../ownership.js";const t={meta:{key:`storage.gcs`,version:1,category:`storage`,displayName:`Google Cloud Storage`,title:`Google Cloud Storage Buckets`,description:`Google Cloud Storage integration for object storage and retrieval.`,domain:`infrastructure`,owners:[`platform.infrastructure`],tags:[`storage`,`gcs`,`google-cloud`],stability:e.Beta},supportedModes:[`managed`,`byok`],capabilities:{provides:[{key:`storage.objects`,version:1}]},configSchema:{schema:{type:`object`,required:[`bucket`],properties:{bucket:{type:`string`,description:`Primary bucket name used for storing objects.`},prefix:{type:`string`,description:`Optional prefix applied to object keys.`}}},example:{bucket:`pfo-tenant-assets`,prefix:`documents/`}},secretSchema:{schema:{type:`object`,properties:{type:{type:`string`,description:`Service account type field from Google credentials JSON (if provided).`},client_email:{type:`string`},private_key:{type:`string`},project_id:{type:`string`}}},example:{type:`service_account`,client_email:`svc-account@example.iam.gserviceaccount.com`,private_key:`-----BEGIN PRIVATE KEY-----...`,project_id:`example-project`}},healthCheck:{method:`ping`,timeoutMs:4e3},docsUrl:`https://cloud.google.com/storage/docs/apis`,constraints:{quotas:{storageGb:5120}},byokSetup:{setupInstructions:`Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store.`}};function n(e){return e.register(t)}export{t as gcsStorageIntegrationSpec,n as registerGcsStorageIntegration};
|
|
2
|
+
//# sourceMappingURL=gcs-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcs-storage.js","names":["gcsStorageIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/gcs-storage.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const gcsStorageIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'storage.gcs',\n version: 1,\n category: 'storage',\n displayName: 'Google Cloud Storage',\n title: 'Google Cloud Storage Buckets',\n description:\n 'Google Cloud Storage integration for object storage and retrieval.',\n domain: 'infrastructure',\n owners: ['platform.infrastructure'],\n tags: ['storage', 'gcs', 'google-cloud'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'storage.objects', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n required: ['bucket'],\n properties: {\n bucket: {\n type: 'string',\n description: 'Primary bucket name used for storing objects.',\n },\n prefix: {\n type: 'string',\n description: 'Optional prefix applied to object keys.',\n },\n },\n },\n example: {\n bucket: 'pfo-tenant-assets',\n prefix: 'documents/',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n description:\n 'Service account type field from Google credentials JSON (if provided).',\n },\n client_email: { type: 'string' },\n private_key: { type: 'string' },\n project_id: { type: 'string' },\n },\n },\n example: {\n type: 'service_account',\n client_email: 'svc-account@example.iam.gserviceaccount.com',\n private_key: '-----BEGIN PRIVATE KEY-----...',\n project_id: 'example-project',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 4000,\n },\n docsUrl: 'https://cloud.google.com/storage/docs/apis',\n constraints: {\n quotas: {\n storageGb: 5120,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store.',\n },\n};\n\nexport function registerGcsStorageIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(gcsStorageIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAA6C,CACxD,KAAM,CACJ,IAAK,cACL,QAAS,EACT,SAAU,UACV,YAAa,uBACb,MAAO,+BACP,YACE,qEACF,OAAQ,iBACR,OAAQ,CAAC,0BAA0B,CACnC,KAAM,CAAC,UAAW,MAAO,eAAe,CACxC,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,kBAAmB,QAAS,EAAG,CAAC,CACnD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,gDACd,CACD,OAAQ,CACN,KAAM,SACN,YAAa,0CACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,oBACR,OAAQ,aACT,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,KAAM,CACJ,KAAM,SACN,YACE,yEACH,CACD,aAAc,CAAE,KAAM,SAAU,CAChC,YAAa,CAAE,KAAM,SAAU,CAC/B,WAAY,CAAE,KAAM,SAAU,CAC/B,CACF,CACD,QAAS,CACP,KAAM,kBACN,aAAc,8CACd,YAAa,iCACb,WAAY,kBACb,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,CACX,OAAQ,CACN,UAAW,KACZ,CACF,CACD,UAAW,CACT,kBACE,4HACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA0B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IntegrationSpec, IntegrationSpecRegistry } from "../spec.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/providers/gmail.d.ts
|
|
4
|
+
declare const gmailIntegrationSpec: IntegrationSpec;
|
|
5
|
+
declare function registerGmailIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { gmailIntegrationSpec, registerGmailIntegration };
|
|
8
|
+
//# sourceMappingURL=gmail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail.d.ts","names":[],"sources":["../../../src/integrations/providers/gmail.ts"],"sourcesContent":[],"mappings":";;;cAGa,sBAAsB;iBAsFnB,wBAAA,WACJ,0BACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{StabilityEnum as e}from"../../ownership.js";const t={meta:{key:`email.gmail`,version:1,category:`email`,displayName:`Gmail API`,title:`Google Gmail API`,description:`Gmail integration supporting inbound thread ingestion and outbound transactional email.`,domain:`communications`,owners:[`platform.messaging`],tags:[`email`,`gmail`],stability:e.Beta},supportedModes:[`managed`,`byok`],capabilities:{provides:[{key:`email.inbound`,version:1},{key:`email.outbound`,version:1}]},configSchema:{schema:{type:`object`,properties:{labelIds:{type:`array`,items:{type:`string`},description:`Optional list of label IDs to scope inbound sync.`},includeSpamTrash:{type:`boolean`,description:`Whether to include spam or trash messages during sync.`}}},example:{labelIds:[`INBOX`],includeSpamTrash:!1}},secretSchema:{schema:{type:`object`,required:[`clientId`,`clientSecret`,`refreshToken`],properties:{clientId:{type:`string`,description:`OAuth client ID for the Google Cloud project.`},clientSecret:{type:`string`,description:`OAuth client secret for the Google Cloud project.`},refreshToken:{type:`string`,description:`OAuth refresh token for delegated Gmail access.`},redirectUri:{type:`string`,description:`Optional redirect URI used when issuing the refresh token.`}}},example:{clientId:`xxx.apps.googleusercontent.com`,clientSecret:`secret`,refreshToken:`refresh-token`}},healthCheck:{method:`custom`,timeoutMs:4e3},docsUrl:`https://developers.google.com/gmail/api`,constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:`Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token.`}};function n(e){return e.register(t)}export{t as gmailIntegrationSpec,n as registerGmailIntegration};
|
|
2
|
+
//# sourceMappingURL=gmail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail.js","names":["gmailIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/gmail.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const gmailIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'email.gmail',\n version: 1,\n category: 'email',\n displayName: 'Gmail API',\n title: 'Google Gmail API',\n description:\n 'Gmail integration supporting inbound thread ingestion and outbound transactional email.',\n domain: 'communications',\n owners: ['platform.messaging'],\n tags: ['email', 'gmail'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [\n { key: 'email.inbound', version: 1 },\n { key: 'email.outbound', version: 1 },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n labelIds: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional list of label IDs to scope inbound sync.',\n },\n includeSpamTrash: {\n type: 'boolean',\n description: 'Whether to include spam or trash messages during sync.',\n },\n },\n },\n example: {\n labelIds: ['INBOX'],\n includeSpamTrash: false,\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientId', 'clientSecret', 'refreshToken'],\n properties: {\n clientId: {\n type: 'string',\n description: 'OAuth client ID for the Google Cloud project.',\n },\n clientSecret: {\n type: 'string',\n description: 'OAuth client secret for the Google Cloud project.',\n },\n refreshToken: {\n type: 'string',\n description: 'OAuth refresh token for delegated Gmail access.',\n },\n redirectUri: {\n type: 'string',\n description: 'Optional redirect URI used when issuing the refresh token.',\n },\n },\n },\n example: {\n clientId: 'xxx.apps.googleusercontent.com',\n clientSecret: 'secret',\n refreshToken: 'refresh-token',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://developers.google.com/gmail/api',\n constraints: {\n rateLimit: {\n rpm: 600,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token.',\n },\n};\n\nexport function registerGmailIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(gmailIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAAwC,CACnD,KAAM,CACJ,IAAK,cACL,QAAS,EACT,SAAU,QACV,YAAa,YACb,MAAO,mBACP,YACE,0FACF,OAAQ,iBACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,QAAS,QAAQ,CACxB,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CACR,CAAE,IAAK,gBAAiB,QAAS,EAAG,CACpC,CAAE,IAAK,iBAAkB,QAAS,EAAG,CACtC,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,SAAU,CACR,KAAM,QACN,MAAO,CAAE,KAAM,SAAU,CACzB,YAAa,oDACd,CACD,iBAAkB,CAChB,KAAM,UACN,YAAa,yDACd,CACF,CACF,CACD,QAAS,CACP,SAAU,CAAC,QAAQ,CACnB,iBAAkB,GACnB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,WAAY,eAAgB,eAAe,CACtD,WAAY,CACV,SAAU,CACR,KAAM,SACN,YAAa,gDACd,CACD,aAAc,CACZ,KAAM,SACN,YAAa,oDACd,CACD,aAAc,CACZ,KAAM,SACN,YAAa,kDACd,CACD,YAAa,CACX,KAAM,SACN,YAAa,6DACd,CACF,CACF,CACD,QAAS,CACP,SAAU,iCACV,aAAc,SACd,aAAc,gBACf,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,0CACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,qJACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAqB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IntegrationSpec, IntegrationSpecRegistry } from "../spec.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/providers/google-calendar.d.ts
|
|
4
|
+
declare const googleCalendarIntegrationSpec: IntegrationSpec;
|
|
5
|
+
declare function registerGoogleCalendarIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { googleCalendarIntegrationSpec, registerGoogleCalendarIntegration };
|
|
8
|
+
//# sourceMappingURL=google-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-calendar.d.ts","names":[],"sources":["../../../src/integrations/providers/google-calendar.ts"],"sourcesContent":[],"mappings":";;;cAGa,+BAA+B;iBAqE5B,iCAAA,WACJ,0BACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{StabilityEnum as e}from"../../ownership.js";const t={meta:{key:`calendar.google`,version:1,category:`calendar`,displayName:`Google Calendar`,title:`Google Calendar API`,description:`Google Calendar integration for event creation, updates, and scheduling automations.`,domain:`productivity`,owners:[`platform.messaging`],tags:[`calendar`,`google`],stability:e.Beta},supportedModes:[`managed`,`byok`],capabilities:{provides:[{key:`calendar.events`,version:1}]},configSchema:{schema:{type:`object`,properties:{calendarId:{type:`string`,description:`Default calendar identifier (defaults to primary).`}}},example:{calendarId:`primary`}},secretSchema:{schema:{type:`object`,required:[`clientEmail`,`privateKey`],properties:{clientEmail:{type:`string`,description:`Service account client email.`},privateKey:{type:`string`,description:`Service account private key.`},projectId:{type:`string`,description:`Google Cloud project ID.`}}},example:{clientEmail:`svc-calendar@example.iam.gserviceaccount.com`,privateKey:`-----BEGIN PRIVATE KEY-----...`,projectId:`calendar-project`}},healthCheck:{method:`custom`,timeoutMs:4e3},docsUrl:`https://developers.google.com/calendar/api`,constraints:{},byokSetup:{setupInstructions:`Create a Google service account with Calendar access and share the target calendars with the service account email.`}};function n(e){return e.register(t)}export{t as googleCalendarIntegrationSpec,n as registerGoogleCalendarIntegration};
|
|
2
|
+
//# sourceMappingURL=google-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-calendar.js","names":["googleCalendarIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/google-calendar.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const googleCalendarIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'calendar.google',\n version: 1,\n category: 'calendar',\n displayName: 'Google Calendar',\n title: 'Google Calendar API',\n description:\n 'Google Calendar integration for event creation, updates, and scheduling automations.',\n domain: 'productivity',\n owners: ['platform.messaging'],\n tags: ['calendar', 'google'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'calendar.events', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n calendarId: {\n type: 'string',\n description: 'Default calendar identifier (defaults to primary).',\n },\n },\n },\n example: {\n calendarId: 'primary',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientEmail', 'privateKey'],\n properties: {\n clientEmail: {\n type: 'string',\n description: 'Service account client email.',\n },\n privateKey: {\n type: 'string',\n description: 'Service account private key.',\n },\n projectId: {\n type: 'string',\n description: 'Google Cloud project ID.',\n },\n },\n },\n example: {\n clientEmail: 'svc-calendar@example.iam.gserviceaccount.com',\n privateKey: '-----BEGIN PRIVATE KEY-----...',\n projectId: 'calendar-project',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://developers.google.com/calendar/api',\n constraints: {},\n byokSetup: {\n setupInstructions:\n 'Create a Google service account with Calendar access and share the target calendars with the service account email.',\n },\n};\n\nexport function registerGoogleCalendarIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(googleCalendarIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAAiD,CAC5D,KAAM,CACJ,IAAK,kBACL,QAAS,EACT,SAAU,WACV,YAAa,kBACb,MAAO,sBACP,YACE,uFACF,OAAQ,eACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,WAAY,SAAS,CAC5B,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,kBAAmB,QAAS,EAAG,CAAC,CACnD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,SACN,YAAa,qDACd,CACF,CACF,CACD,QAAS,CACP,WAAY,UACb,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,cAAe,aAAa,CACvC,WAAY,CACV,YAAa,CACX,KAAM,SACN,YAAa,gCACd,CACD,WAAY,CACV,KAAM,SACN,YAAa,+BACd,CACD,UAAW,CACT,KAAM,SACN,YAAa,2BACd,CACF,CACF,CACD,QAAS,CACP,YAAa,+CACb,WAAY,iCACZ,UAAW,mBACZ,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,EAAE,CACf,UAAW,CACT,kBACE,sHACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA8B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Voice, VoiceProvider, VoiceSynthesisInput, VoiceSynthesisResult } from "../voice.js";
|
|
2
|
+
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/providers/impls/elevenlabs-voice.d.ts
|
|
5
|
+
interface ElevenLabsVoiceProviderOptions {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
defaultVoiceId?: string;
|
|
8
|
+
modelId?: string;
|
|
9
|
+
client?: ElevenLabsClient;
|
|
10
|
+
}
|
|
11
|
+
declare class ElevenLabsVoiceProvider implements VoiceProvider {
|
|
12
|
+
private readonly client;
|
|
13
|
+
private readonly defaultVoiceId?;
|
|
14
|
+
private readonly modelId?;
|
|
15
|
+
constructor(options: ElevenLabsVoiceProviderOptions);
|
|
16
|
+
listVoices(): Promise<Voice[]>;
|
|
17
|
+
synthesize(input: VoiceSynthesisInput): Promise<VoiceSynthesisResult>;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { ElevenLabsVoiceProvider, ElevenLabsVoiceProviderOptions };
|
|
21
|
+
//# sourceMappingURL=elevenlabs-voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs-voice.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/elevenlabs-voice.ts"],"sourcesContent":[],"mappings":";;;;UAUiB,8BAAA;;EAAA,cAAA,CAAA,EAAA,MAAA;EAiCJ,OAAA,CAAA,EAAA,MAAA;EAKU,MAAA,CAAA,EAlCZ,gBAkCY;;AAUD,cAfT,uBAAA,YAAmC,aAe1B,CAAA;EAgBI,iBAAA,MAAA;EAA8B,iBAAA,cAAA;EAAR,iBAAA,OAAA;EA/BA,WAAA,CAAA,OAAA,EAKzB,8BALyB;EAAa,UAAA,CAAA,CAAA,EAevC,OAfuC,CAe/B,KAf+B,EAAA,CAAA;oBA+BnC,sBAAsB,QAAQ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ElevenLabsClient as e}from"@elevenlabs/elevenlabs-js";const t={mp3:`mp3_44100_128`,wav:`pcm_44100`,ogg:`mp3_44100_128`,pcm:`pcm_16000`},n={mp3_22050_32:22050,mp3_44100_32:44100,mp3_44100_64:44100,mp3_44100_96:44100,mp3_44100_128:44100,mp3_44100_192:44100,pcm_16000:16e3,pcm_22050:22050,pcm_24000:24e3,pcm_44100:44100,ulaw_8000:8e3};var r=class{client;defaultVoiceId;modelId;constructor(t){this.client=t.client??new e({apiKey:t.apiKey}),this.defaultVoiceId=t.defaultVoiceId,this.modelId=t.modelId}async listVoices(){return((await this.client.voices.getAll()).voices??[]).map(e=>({id:e.voiceId??``,name:e.name??e.voiceId??``,description:e.description??void 0,language:e.labels?.language??void 0,gender:i(e.labels?.gender),previewUrl:e.previewUrl??void 0,metadata:{category:e.category??``,...e.labels}}))}async synthesize(e){let r=e.voiceId??this.defaultVoiceId;if(!r)throw Error(`Voice ID is required for ElevenLabs synthesis.`);let i=e.format??`mp3`,o=t[i]??t.mp3,s=e.sampleRateHz??n[o]??n.mp3_44100_128??44100,c=e.stability!=null||e.similarityBoost!=null||e.style!=null?{...e.stability==null?{}:{stability:e.stability},...e.similarityBoost==null?{}:{similarityBoost:e.similarityBoost},...e.style==null?{}:{style:e.style}}:void 0;return{audio:await a(await this.client.textToSpeech.convert(r,{text:e.text,modelId:this.modelId,outputFormat:o,voiceSettings:c})),format:i,sampleRateHz:s,durationSeconds:void 0,url:void 0}}};function i(e){if(!e)return;let t=e.toLowerCase();if(t===`male`||t===`female`||t===`neutral`)return t}async function a(e){let t=e.getReader(),n=[];for(;;){let{done:e,value:r}=await t.read();if(e)break;r&&n.push(r)}let r=n.reduce((e,t)=>e+t.length,0),i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.length;return i}export{r as ElevenLabsVoiceProvider};
|
|
2
|
+
//# sourceMappingURL=elevenlabs-voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs-voice.js","names":["FORMAT_MAP: Record<\n NonNullable<VoiceSynthesisInput['format']>,\n ElevenLabs.TextToSpeechConvertRequestOutputFormat\n>","SAMPLE_RATE: Partial<\n Record<ElevenLabs.TextToSpeechConvertRequestOutputFormat, number>\n>","chunks: Uint8Array[]"],"sources":["../../../../src/integrations/providers/impls/elevenlabs-voice.ts"],"sourcesContent":["import { ElevenLabsClient } from '@elevenlabs/elevenlabs-js';\nimport type { ElevenLabs } from '@elevenlabs/elevenlabs-js';\n\nimport type {\n Voice,\n VoiceProvider,\n VoiceSynthesisInput,\n VoiceSynthesisResult,\n} from '../voice';\n\nexport interface ElevenLabsVoiceProviderOptions {\n apiKey: string;\n defaultVoiceId?: string;\n modelId?: string;\n client?: ElevenLabsClient;\n}\n\nconst FORMAT_MAP: Record<\n NonNullable<VoiceSynthesisInput['format']>,\n ElevenLabs.TextToSpeechConvertRequestOutputFormat\n> = {\n mp3: 'mp3_44100_128',\n wav: 'pcm_44100',\n ogg: 'mp3_44100_128',\n pcm: 'pcm_16000',\n};\n\nconst SAMPLE_RATE: Partial<\n Record<ElevenLabs.TextToSpeechConvertRequestOutputFormat, number>\n> = {\n mp3_22050_32: 22050,\n mp3_44100_32: 44100,\n mp3_44100_64: 44100,\n mp3_44100_96: 44100,\n mp3_44100_128: 44100,\n mp3_44100_192: 44100,\n pcm_16000: 16000,\n pcm_22050: 22050,\n pcm_24000: 24000,\n pcm_44100: 44100,\n ulaw_8000: 8000,\n};\n\nexport class ElevenLabsVoiceProvider implements VoiceProvider {\n private readonly client: ElevenLabsClient;\n private readonly defaultVoiceId?: string;\n private readonly modelId?: string;\n\n constructor(options: ElevenLabsVoiceProviderOptions) {\n this.client =\n options.client ??\n new ElevenLabsClient({\n apiKey: options.apiKey,\n });\n this.defaultVoiceId = options.defaultVoiceId;\n this.modelId = options.modelId;\n }\n\n async listVoices(): Promise<Voice[]> {\n const response = await this.client.voices.getAll();\n return (response.voices ?? []).map((voice) => ({\n id: voice.voiceId ?? '',\n name: voice.name ?? voice.voiceId ?? '',\n description: voice.description ?? undefined,\n language: voice.labels?.language ?? undefined,\n gender: normalizeGender(voice.labels?.gender),\n previewUrl: voice.previewUrl ?? undefined,\n metadata: {\n category: voice.category ?? '',\n ...voice.labels,\n },\n }));\n }\n\n async synthesize(input: VoiceSynthesisInput): Promise<VoiceSynthesisResult> {\n const voiceId = input.voiceId ?? this.defaultVoiceId;\n if (!voiceId) {\n throw new Error('Voice ID is required for ElevenLabs synthesis.');\n }\n\n const formatKey = input.format ?? 'mp3';\n const outputFormat = FORMAT_MAP[formatKey] ?? FORMAT_MAP.mp3;\n const sampleRate =\n input.sampleRateHz ??\n SAMPLE_RATE[outputFormat] ??\n SAMPLE_RATE.mp3_44100_128 ??\n 44100;\n\n const voiceSettings =\n input.stability != null ||\n input.similarityBoost != null ||\n input.style != null\n ? {\n ...(input.stability != null ? { stability: input.stability } : {}),\n ...(input.similarityBoost != null\n ? { similarityBoost: input.similarityBoost }\n : {}),\n ...(input.style != null ? { style: input.style } : {}),\n }\n : undefined;\n\n const stream = await this.client.textToSpeech.convert(voiceId, {\n text: input.text,\n modelId: this.modelId,\n outputFormat,\n voiceSettings,\n });\n\n const audio = await readWebStream(stream);\n\n return {\n audio,\n format: formatKey,\n sampleRateHz: sampleRate,\n durationSeconds: undefined,\n url: undefined,\n };\n }\n}\n\nfunction normalizeGender(\n value: string | undefined\n): 'male' | 'female' | 'neutral' | undefined {\n if (!value) return undefined;\n const normalized = value.toLowerCase();\n if (normalized === 'male' || normalized === 'female' || normalized === 'neutral') {\n return normalized;\n }\n return undefined;\n}\n\nasync function readWebStream(\n stream: ReadableStream<Uint8Array>\n): Promise<Uint8Array> {\n const reader = stream.getReader();\n const chunks: Uint8Array[] = [];\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n chunks.push(value);\n }\n }\n\n const length = chunks.reduce((total, chunk) => total + chunk.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\n\n\n\n"],"mappings":"6DAiBA,MAAMA,EAGF,CACF,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,YACN,CAEKC,EAEF,CACF,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,UAAW,KACX,UAAW,MACX,UAAW,KACX,UAAW,MACX,UAAW,IACZ,CAED,IAAa,EAAb,KAA8D,CAC5D,OACA,eACA,QAEA,YAAY,EAAyC,CACnD,KAAK,OACH,EAAQ,QACR,IAAI,EAAiB,CACnB,OAAQ,EAAQ,OACjB,CAAC,CACJ,KAAK,eAAiB,EAAQ,eAC9B,KAAK,QAAU,EAAQ,QAGzB,MAAM,YAA+B,CAEnC,QADiB,MAAM,KAAK,OAAO,OAAO,QAAQ,EACjC,QAAU,EAAE,EAAE,IAAK,IAAW,CAC7C,GAAI,EAAM,SAAW,GACrB,KAAM,EAAM,MAAQ,EAAM,SAAW,GACrC,YAAa,EAAM,aAAe,IAAA,GAClC,SAAU,EAAM,QAAQ,UAAY,IAAA,GACpC,OAAQ,EAAgB,EAAM,QAAQ,OAAO,CAC7C,WAAY,EAAM,YAAc,IAAA,GAChC,SAAU,CACR,SAAU,EAAM,UAAY,GAC5B,GAAG,EAAM,OACV,CACF,EAAE,CAGL,MAAM,WAAW,EAA2D,CAC1E,IAAM,EAAU,EAAM,SAAW,KAAK,eACtC,GAAI,CAAC,EACH,MAAU,MAAM,iDAAiD,CAGnE,IAAM,EAAY,EAAM,QAAU,MAC5B,EAAe,EAAW,IAAc,EAAW,IACnD,EACJ,EAAM,cACN,EAAY,IACZ,EAAY,eACZ,MAEI,EACJ,EAAM,WAAa,MACnB,EAAM,iBAAmB,MACzB,EAAM,OAAS,KACX,CACE,GAAI,EAAM,WAAa,KAAwC,EAAE,CAAnC,CAAE,UAAW,EAAM,UAAW,CAC5D,GAAI,EAAM,iBAAmB,KAEzB,EAAE,CADF,CAAE,gBAAiB,EAAM,gBAAiB,CAE9C,GAAI,EAAM,OAAS,KAAgC,EAAE,CAA3B,CAAE,MAAO,EAAM,MAAO,CACjD,CACD,IAAA,GAWN,MAAO,CACL,MAHY,MAAM,EAPL,MAAM,KAAK,OAAO,aAAa,QAAQ,EAAS,CAC7D,KAAM,EAAM,KACZ,QAAS,KAAK,QACd,eACA,gBACD,CAAC,CAEuC,CAIvC,OAAQ,EACR,aAAc,EACd,gBAAiB,IAAA,GACjB,IAAK,IAAA,GACN,GAIL,SAAS,EACP,EAC2C,CAC3C,GAAI,CAAC,EAAO,OACZ,IAAM,EAAa,EAAM,aAAa,CACtC,GAAI,IAAe,QAAU,IAAe,UAAY,IAAe,UACrE,OAAO,EAKX,eAAe,EACb,EACqB,CACrB,IAAM,EAAS,EAAO,WAAW,CAC3BC,EAAuB,EAAE,CAE/B,OAAa,CACX,GAAM,CAAE,OAAM,SAAU,MAAM,EAAO,MAAM,CAC3C,GAAI,EAAM,MACN,GACF,EAAO,KAAK,EAAM,CAItB,IAAM,EAAS,EAAO,QAAQ,EAAO,IAAU,EAAQ,EAAM,OAAQ,EAAE,CACjE,EAAS,IAAI,WAAW,EAAO,CACjC,EAAS,EACb,IAAK,IAAM,KAAS,EAClB,EAAO,IAAI,EAAO,EAAO,CACzB,GAAU,EAAM,OAElB,OAAO"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DeleteObjectInput, GetObjectResult, ListObjectsQuery, ListObjectsResult, ObjectStorageProvider, PutObjectInput, SignedUrlOptions, StorageObjectMetadata } from "../storage.js";
|
|
2
|
+
import { Storage, StorageOptions } from "@google-cloud/storage";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/providers/impls/gcs-storage.d.ts
|
|
5
|
+
interface GoogleCloudStorageProviderOptions {
|
|
6
|
+
bucket: string;
|
|
7
|
+
storage?: Storage;
|
|
8
|
+
clientOptions?: StorageOptions;
|
|
9
|
+
}
|
|
10
|
+
declare class GoogleCloudStorageProvider implements ObjectStorageProvider {
|
|
11
|
+
private readonly storage;
|
|
12
|
+
private readonly bucketName;
|
|
13
|
+
constructor(options: GoogleCloudStorageProviderOptions);
|
|
14
|
+
putObject(input: PutObjectInput): Promise<StorageObjectMetadata>;
|
|
15
|
+
getObject(input: DeleteObjectInput): Promise<GetObjectResult | null>;
|
|
16
|
+
deleteObject(input: DeleteObjectInput): Promise<void>;
|
|
17
|
+
generateSignedUrl(options: SignedUrlOptions): Promise<{
|
|
18
|
+
url: string;
|
|
19
|
+
expiresAt: Date;
|
|
20
|
+
}>;
|
|
21
|
+
listObjects(query: ListObjectsQuery): Promise<ListObjectsResult>;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { GoogleCloudStorageProvider, GoogleCloudStorageProviderOptions };
|
|
25
|
+
//# sourceMappingURL=gcs-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcs-storage.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/gcs-storage.ts"],"sourcesContent":[],"mappings":";;;;UAaiB,iCAAA;;EAAA,OAAA,CAAA,EAEL,OAFK;EAMJ,aAAA,CAAA,EAHK,cAGsB;;AAUf,cAVZ,0BAAA,YAAsC,qBAU1B,CAAA;EAAyB,iBAAA,OAAA;EAAR,iBAAA,UAAA;EAiBjB,WAAA,CAAA,OAAA,EAvBF,iCAuBE;EAA4B,SAAA,CAAA,KAAA,EAjB5B,cAiB4B,CAAA,EAjBX,OAiBW,CAjBH,qBAiBG,CAAA;EAAR,SAAA,CAAA,KAAA,EAApB,iBAAoB,CAAA,EAAA,OAAA,CAAQ,eAAR,GAAA,IAAA,CAAA;EAcjB,YAAA,CAAA,KAAA,EAAA,iBAAA,CAAA,EAAoB,OAApB,CAAA,IAAA,CAAA;EAAoB,iBAAA,CAAA,OAAA,EAOb,gBAPa,CAAA,EAOM,OAPN,CAAA;IAOb,GAAA,EAAA,MAAA;IAEpB,SAAA,EAAA,IAAA;EAFuC,CAAA,CAAA;EAiB3B,WAAA,CAAA,KAAA,EAAA,gBAAA,CAAA,EAAmB,OAAnB,CAA2B,iBAA3B,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Storage as e}from"@google-cloud/storage";var t=class{storage;bucketName;constructor(t){this.storage=t.storage??new e(t.clientOptions??void 0),this.bucketName=t.bucket}async putObject(e){let t=e.bucket??this.bucketName,i=this.storage.bucket(t).file(e.key),a=n(e.data);await i.save(a,{resumable:!1,contentType:e.contentType,metadata:e.metadata}),e.makePublic&&await i.makePublic();let[o]=await i.getMetadata();return r(o)}async getObject(e){let t=e.bucket??this.bucketName,n=this.storage.bucket(t).file(e.key),[i]=await n.exists();if(!i)return null;let[a]=await n.download(),[o]=await n.getMetadata();return{...r(o),data:new Uint8Array(a)}}async deleteObject(e){let t=e.bucket??this.bucketName;await this.storage.bucket(t).file(e.key).delete({ignoreNotFound:!0})}async generateSignedUrl(e){let t=e.bucket??this.bucketName,n=this.storage.bucket(t).file(e.key),r=e.method===`PUT`?`write`:`read`,i=Date.now()+e.expiresInSeconds*1e3,[a]=await n.getSignedUrl({action:r,expires:i,contentType:e.contentType});return{url:a,expiresAt:new Date(i)}}async listObjects(e){let t=e.bucket??this.bucketName,[n,i,a]=await this.storage.bucket(t).getFiles({prefix:e.prefix,maxResults:e.maxResults,pageToken:e.pageToken}),o=typeof i==`object`&&i&&`pageToken`in i?i.pageToken:void 0,s=a&&typeof a==`object`&&`nextPageToken`in a?a.nextPageToken:void 0;return{objects:n.map(e=>r(e.metadata)),nextPageToken:o??s??void 0}}};function n(e){return e instanceof Uint8Array,Buffer.from(e)}function r(e){return{bucket:e.bucket??``,key:e.name??``,sizeBytes:e.size?Number(e.size):void 0,contentType:e.contentType??void 0,etag:e.etag??void 0,checksum:e.md5Hash??void 0,lastModified:e.updated?new Date(e.updated):void 0,metadata:e.metadata}}export{t as GoogleCloudStorageProvider};
|
|
2
|
+
//# sourceMappingURL=gcs-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcs-storage.js","names":[],"sources":["../../../../src/integrations/providers/impls/gcs-storage.ts"],"sourcesContent":["import { Storage, type StorageOptions } from '@google-cloud/storage';\n\nimport type {\n ObjectStorageProvider,\n PutObjectInput,\n GetObjectResult,\n StorageObjectMetadata,\n ListObjectsQuery,\n ListObjectsResult,\n SignedUrlOptions,\n DeleteObjectInput,\n} from '../storage';\n\nexport interface GoogleCloudStorageProviderOptions {\n bucket: string;\n storage?: Storage;\n clientOptions?: StorageOptions;\n}\n\nexport class GoogleCloudStorageProvider implements ObjectStorageProvider {\n private readonly storage: Storage;\n private readonly bucketName: string;\n\n constructor(options: GoogleCloudStorageProviderOptions) {\n this.storage =\n options.storage ?? new Storage(options.clientOptions ?? undefined);\n this.bucketName = options.bucket;\n }\n\n async putObject(input: PutObjectInput): Promise<StorageObjectMetadata> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n const buffer = toBuffer(input.data);\n await file.save(buffer, {\n resumable: false,\n contentType: input.contentType,\n metadata: input.metadata,\n });\n if (input.makePublic) {\n await file.makePublic();\n }\n const [metadata] = await file.getMetadata();\n return toMetadata(metadata);\n }\n\n async getObject(input: DeleteObjectInput): Promise<GetObjectResult | null> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n const [exists] = await file.exists();\n if (!exists) return null;\n const [contents] = await file.download();\n const [metadata] = await file.getMetadata();\n return {\n ...toMetadata(metadata),\n data: new Uint8Array(contents),\n };\n }\n\n async deleteObject(input: DeleteObjectInput): Promise<void> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n await file.delete({ ignoreNotFound: true });\n }\n\n async generateSignedUrl(options: SignedUrlOptions): Promise<{\n url: string;\n expiresAt: Date;\n }> {\n const bucketName = options.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(options.key);\n const action = options.method === 'PUT' ? 'write' : 'read';\n const expires = Date.now() + options.expiresInSeconds * 1000;\n const [url] = await file.getSignedUrl({\n action,\n expires,\n contentType: options.contentType,\n });\n return { url, expiresAt: new Date(expires) };\n }\n\n async listObjects(query: ListObjectsQuery): Promise<ListObjectsResult> {\n const bucketName = query.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const [files, nextQuery, response] = await bucket.getFiles({\n prefix: query.prefix,\n maxResults: query.maxResults,\n pageToken: query.pageToken,\n });\n const nextTokenFromQuery =\n typeof nextQuery === 'object' && nextQuery !== null && 'pageToken' in nextQuery\n ? (nextQuery as { pageToken?: string }).pageToken\n : undefined;\n const nextTokenFromResponse =\n response && typeof response === 'object' && 'nextPageToken' in response\n ? (response as { nextPageToken?: string }).nextPageToken\n : undefined;\n return {\n objects: files.map((file) => toMetadata(file.metadata)),\n nextPageToken: nextTokenFromQuery ?? nextTokenFromResponse ?? undefined,\n };\n }\n}\n\nfunction toBuffer(\n data: Uint8Array | ArrayBuffer\n): Buffer {\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n return Buffer.from(data);\n}\n\nfunction toMetadata(metadata: any): StorageObjectMetadata {\n return {\n bucket: metadata.bucket ?? '',\n key: metadata.name ?? '',\n sizeBytes: metadata.size ? Number(metadata.size) : undefined,\n contentType: metadata.contentType ?? undefined,\n etag: metadata.etag ?? undefined,\n checksum: metadata.md5Hash ?? undefined,\n lastModified: metadata.updated ? new Date(metadata.updated) : undefined,\n metadata: metadata.metadata,\n };\n}\n\n\n"],"mappings":"gDAmBA,IAAa,EAAb,KAAyE,CACvE,QACA,WAEA,YAAY,EAA4C,CACtD,KAAK,QACH,EAAQ,SAAW,IAAI,EAAQ,EAAQ,eAAiB,IAAA,GAAU,CACpE,KAAK,WAAa,EAAQ,OAG5B,MAAM,UAAU,EAAuD,CACrE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CAC7B,EAAS,EAAS,EAAM,KAAK,CACnC,MAAM,EAAK,KAAK,EAAQ,CACtB,UAAW,GACX,YAAa,EAAM,YACnB,SAAU,EAAM,SACjB,CAAC,CACE,EAAM,YACR,MAAM,EAAK,YAAY,CAEzB,GAAM,CAAC,GAAY,MAAM,EAAK,aAAa,CAC3C,OAAO,EAAW,EAAS,CAG7B,MAAM,UAAU,EAA2D,CACzE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CAC7B,CAAC,GAAU,MAAM,EAAK,QAAQ,CACpC,GAAI,CAAC,EAAQ,OAAO,KACpB,GAAM,CAAC,GAAY,MAAM,EAAK,UAAU,CAClC,CAAC,GAAY,MAAM,EAAK,aAAa,CAC3C,MAAO,CACL,GAAG,EAAW,EAAS,CACvB,KAAM,IAAI,WAAW,EAAS,CAC/B,CAGH,MAAM,aAAa,EAAyC,CAC1D,IAAM,EAAa,EAAM,QAAU,KAAK,WAGxC,MAFe,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CACxB,OAAO,CAAE,eAAgB,GAAM,CAAC,CAG7C,MAAM,kBAAkB,EAGrB,CACD,IAAM,EAAa,EAAQ,QAAU,KAAK,WAEpC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAQ,IAAI,CAC/B,EAAS,EAAQ,SAAW,MAAQ,QAAU,OAC9C,EAAU,KAAK,KAAK,CAAG,EAAQ,iBAAmB,IAClD,CAAC,GAAO,MAAM,EAAK,aAAa,CACpC,SACA,UACA,YAAa,EAAQ,YACtB,CAAC,CACF,MAAO,CAAE,MAAK,UAAW,IAAI,KAAK,EAAQ,CAAE,CAG9C,MAAM,YAAY,EAAqD,CACrE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,CAAC,EAAO,EAAW,GAAY,MADtB,KAAK,QAAQ,OAAO,EAAW,CACI,SAAS,CACzD,OAAQ,EAAM,OACd,WAAY,EAAM,WAClB,UAAW,EAAM,UAClB,CAAC,CACI,EACJ,OAAO,GAAc,UAAY,GAAsB,cAAe,EACjE,EAAqC,UACtC,IAAA,GACA,EACJ,GAAY,OAAO,GAAa,UAAY,kBAAmB,EAC1D,EAAwC,cACzC,IAAA,GACN,MAAO,CACL,QAAS,EAAM,IAAK,GAAS,EAAW,EAAK,SAAS,CAAC,CACvD,cAAe,GAAsB,GAAyB,IAAA,GAC/D,GAIL,SAAS,EACP,EACQ,CAIR,OAHI,aAAgB,WACX,OAAO,KAAK,EAAK,CAK5B,SAAS,EAAW,EAAsC,CACxD,MAAO,CACL,OAAQ,EAAS,QAAU,GAC3B,IAAK,EAAS,MAAQ,GACtB,UAAW,EAAS,KAAO,OAAO,EAAS,KAAK,CAAG,IAAA,GACnD,YAAa,EAAS,aAAe,IAAA,GACrC,KAAM,EAAS,MAAQ,IAAA,GACvB,SAAU,EAAS,SAAW,IAAA,GAC9B,aAAc,EAAS,QAAU,IAAI,KAAK,EAAS,QAAQ,CAAG,IAAA,GAC9D,SAAU,EAAS,SACpB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EmailInboundProvider, EmailMessage, EmailMessagesSinceQuery, EmailThread, EmailThreadListQuery } from "../email.js";
|
|
2
|
+
import { gmail_v1 } from "googleapis";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/providers/impls/gmail-inbound.d.ts
|
|
5
|
+
interface GmailInboundProviderOptions {
|
|
6
|
+
auth: gmail_v1.Options['auth'];
|
|
7
|
+
userId?: string;
|
|
8
|
+
gmail?: gmail_v1.Gmail;
|
|
9
|
+
includeSpamTrash?: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare class GmailInboundProvider implements EmailInboundProvider {
|
|
12
|
+
private readonly gmail;
|
|
13
|
+
private readonly userId;
|
|
14
|
+
private readonly includeSpamTrash;
|
|
15
|
+
private readonly auth;
|
|
16
|
+
constructor(options: GmailInboundProviderOptions);
|
|
17
|
+
listThreads(query?: EmailThreadListQuery): Promise<EmailThread[]>;
|
|
18
|
+
getThread(threadId: string): Promise<EmailThread | null>;
|
|
19
|
+
listMessagesSince(query: EmailMessagesSinceQuery): Promise<{
|
|
20
|
+
messages: EmailMessage[];
|
|
21
|
+
nextPageToken: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
private transformMessage;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { GmailInboundProvider, GmailInboundProviderOptions };
|
|
27
|
+
//# sourceMappingURL=gmail-inbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail-inbound.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/gmail-inbound.ts"],"sourcesContent":[],"mappings":";;;;UAUiB,2BAAA;QACT,QAAA,CAAS;EADA,MAAA,CAAA,EAAA,MAAA;EAOJ,KAAA,CAAA,EAJH,QAAA,CAAS,KAIN;EAMU,gBAAA,CAAA,EAAA,OAAA;;AAYoC,cAlB9C,oBAAA,YAAgC,oBAkBc,CAAA;EAAR,iBAAA,KAAA;EAqBN,iBAAA,MAAA;EAAR,iBAAA,gBAAA;EAsDJ,iBAAA,IAAA;uBAvFV;EAuFiC,WAAA,CAAA,KAAA,CAAA,EA3E5B,oBA2E4B,CAAA,EA3EL,OA2EK,CA3EG,WA2EH,EAAA,CAAA;EA7FX,SAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAuCR,OAvCQ,CAuCA,WAvCA,GAAA,IAAA,CAAA;EAAoB,iBAAA,CAAA,KAAA,EA6FhC,uBA7FgC,CAAA,EA6FT,OA7FS,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{google as e}from"googleapis";var t=class{gmail;userId;includeSpamTrash;auth;constructor(t){this.auth=t.auth,this.gmail=t.gmail??e.gmail({version:`v1`,auth:t.auth}),this.userId=t.userId??`me`,this.includeSpamTrash=t.includeSpamTrash??!1}async listThreads(e){let t=await this.gmail.users.threads.list({userId:this.userId,maxResults:e?.pageSize,pageToken:e?.pageToken,q:e?.query,labelIds:e?.label?[e.label]:void 0,includeSpamTrash:this.includeSpamTrash,auth:this.auth});return(await Promise.all((t.data.threads??[]).map(async e=>e.id?this.getThread(e.id):null))).filter(e=>e!==null)}async getThread(e){let t=(await this.gmail.users.threads.get({id:e,userId:this.userId,format:`full`,auth:this.auth})).data;if(!t)return null;let n=t.messages?.map(e=>this.transformMessage(e))??[],r=o(n.flatMap(e=>[e.from,...e.to,...e.cc??[]])),i=n[0],a=n[n.length-1],s=a?.receivedAt??a?.sentAt??i?.receivedAt??i?.sentAt??new Date,c=Array.from(new Set(n.flatMap(e=>{let t=e.metadata?.labelIds;return t?t.split(`,`).map(e=>e.trim()):[]}).filter(e=>!!e)));return{id:t.id??e,subject:n[0]?.subject,snippet:t.snippet??``,participants:r,messages:n,updatedAt:s,labels:c,metadata:t.historyId?{historyId:t.historyId}:void 0}}async listMessagesSince(e){let t=e.since?Math.floor(e.since.getTime()/1e3):void 0,n=[];t&&n.push(`after:${t}`);let r=await this.gmail.users.messages.list({userId:this.userId,maxResults:e.pageSize,pageToken:e.pageToken,labelIds:e.label?[e.label]:void 0,q:n.join(` `),includeSpamTrash:this.includeSpamTrash,auth:this.auth});return{messages:(await Promise.all((r.data.messages??[]).map(async e=>{if(!e.id)return null;let t=await this.gmail.users.messages.get({userId:this.userId,id:e.id,format:`full`,auth:this.auth});return t.data?this.transformMessage(t.data):null}))).filter(e=>e!==null),nextPageToken:r.data.nextPageToken??void 0}}transformMessage(e){let t=e.payload?.headers??[],o=n(t,`Subject`)??``,c=r(n(t,`From`))??i(`from`,e.id),l=a(n(t,`To`)),u=a(n(t,`Cc`)),d=a(n(t,`Bcc`)),f=r(n(t,`Reply-To`)),{text:p,html:m,attachments:h}=s(e.payload),g=e.internalDate?new Date(Number(e.internalDate)):new Date,_={...e.labelIds?.length?{labelIds:e.labelIds.join(`,`)}:{},...e.historyId?{historyId:e.historyId}:{}};return{id:e.id??``,threadId:e.threadId??``,subject:o,from:c,to:l,cc:u,bcc:d,replyTo:f??void 0,sentAt:g,receivedAt:g,textBody:p??void 0,htmlBody:m??void 0,attachments:h,headers:Object.fromEntries(t.map(e=>[e.name??``,e.value??``])),metadata:Object.keys(_).length>0?_:void 0}}};function n(e,t){let n=e.find(e=>e.name?.toLowerCase()===t.toLowerCase())?.value;return typeof n==`string`?n:void 0}function r(e){let t=a(e);return t.length===0?null:t[0]}function i(e,t){return{email:`${e}-${t&&t.replace(/[^\w]/g,``).slice(-8)||`unknown`}@mail.local`}}function a(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.match(/^(?:"?([^"]*)"?\s)?<?([^<>]+)>?$/);if(!t)return{email:e};let n=t[1]?.trim(),r=t[2]?.trim();return r?n?{email:r,name:n}:{email:r}:{email:e}}):[]}function o(e){let t=new Map;for(let n of e)n&&t.set(n.email.toLowerCase(),n);return Array.from(t.values())}function s(e){if(!e)return{attachments:[]};let t=[],n=e=>{if(!e)return{};e.filename&&e.body?.attachmentId&&t.push({id:e.body.attachmentId,filename:e.filename,contentType:e.mimeType??`application/octet-stream`,sizeBytes:e.body.size??void 0});let r=e.mimeType??``,i=e.body?.data;return r===`text/plain`&&i?{text:c(i)}:r===`text/html`&&i?{html:c(i)}:e.parts?.length?e.parts.reduce((e,t)=>{let r=n(t);return{text:r.text??e.text,html:r.html??e.html}},{}):{}},{text:r,html:i}=n(e);return{text:r,html:i,attachments:t}}function c(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=t.length%4,r=n===0?t:t+`=`.repeat(4-n);return Buffer.from(r,`base64`).toString(`utf-8`)}export{t as GmailInboundProvider};
|
|
2
|
+
//# sourceMappingURL=gmail-inbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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(header?: string): { 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): Array<{ 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: (ReturnType<typeof parseAddress> | { email: string; name?: string })[]\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 = (part?: gmail_v1.Schema$MessagePart): {\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\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EmailOutboundMessage, EmailOutboundProvider, EmailOutboundResult } from "../email.js";
|
|
2
|
+
import { gmail_v1 } from "googleapis";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/providers/impls/gmail-outbound.d.ts
|
|
5
|
+
interface GmailOutboundProviderOptions {
|
|
6
|
+
auth: gmail_v1.Options['auth'];
|
|
7
|
+
userId?: string;
|
|
8
|
+
gmail?: gmail_v1.Gmail;
|
|
9
|
+
}
|
|
10
|
+
declare class GmailOutboundProvider implements EmailOutboundProvider {
|
|
11
|
+
private readonly gmail;
|
|
12
|
+
private readonly userId;
|
|
13
|
+
private readonly auth;
|
|
14
|
+
constructor(options: GmailOutboundProviderOptions);
|
|
15
|
+
sendEmail(message: EmailOutboundMessage): Promise<EmailOutboundResult>;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { GmailOutboundProvider, GmailOutboundProviderOptions };
|
|
19
|
+
//# sourceMappingURL=gmail-outbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;;AAiBA,cAjBA,qBAAA,YAAiC,qBAiBjC,CAAA;EACA,iBAAA,KAAA;EAAR,iBAAA,MAAA;EAlByC,iBAAA,IAAA;EAAqB,WAAA,CAAA,OAAA,EAK5C,4BAL4C;qBAiBtD,uBACR,QAAQ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{google as e}from"googleapis";var t=class{gmail;userId;auth;constructor(t){this.auth=t.auth,this.gmail=t.gmail??e.gmail({version:`v1`,auth:t.auth}),this.userId=t.userId??`me`}async sendEmail(e){let t=n(e),r=await this.gmail.users.messages.send({userId:this.userId,requestBody:{raw:t},auth:this.auth});return{id:r.data.id??``,providerMessageId:r.data.id??void 0,queuedAt:new Date}}};function n(e){let t=[`From: ${o(e.from)}`,`To: ${e.to.map(o).join(`, `)}`,`Subject: ${e.subject}`,`MIME-Version: 1.0`];e.cc?.length&&t.push(`Cc: ${e.cc.map(o).join(`, `)}`),e.replyTo&&t.push(`Reply-To: ${o(e.replyTo)}`),Object.entries(e.headers??{}).forEach(([e,n])=>{t.push(`${e}: ${n}`)});let n=e.attachments??[],s=!!e.htmlBody,c=!!e.textBody,l=`mixed_${Date.now()}`,u=`alt_${Date.now()}`,d=``;n.length>0?(t.push(`Content-Type: multipart/mixed; boundary="${l}"`),d+=`\r\n--${l}\r\n`,d+=r(c,s,u,e),n.forEach(e=>{d+=a(l,e)}),d+=`\r\n--${l}--`):c&&s?(t.push(`Content-Type: multipart/alternative; boundary="${u}"`),d+=`\r\n--${u}\r\n`,d+=i(`text/plain; charset="utf-8"`,e.textBody),d+=`\r\n--${u}\r\n`,d+=i(`text/html; charset="utf-8"`,e.htmlBody),d+=`\r\n--${u}--`):s?(t.push(`Content-Type: text/html; charset="utf-8"`),d+=`\r\n\r\n${e.htmlBody}`):(t.push(`Content-Type: text/plain; charset="utf-8"`),d+=`\r\n\r\n${e.textBody??``}`);let f=`${t.join(`\r
|
|
2
|
+
`)}${d}`;return Buffer.from(f).toString(`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function r(e,t,n,r){let a=``;return a+=`Content-Type: multipart/alternative; boundary="${n}"\r\n`,a+=`\r
|
|
3
|
+
`,e&&(a+=`--${n}\r\n`,a+=i(`text/plain; charset="utf-8"`,r.textBody)),t&&(a+=`\r\n--${n}\r\n`,a+=i(`text/html; charset="utf-8"`,r.htmlBody)),a+=`\r\n--${n}--`,a}function i(e,t){return`Content-Type: ${e}\r\nContent-Transfer-Encoding: 7bit\r
|
|
4
|
+
\r
|
|
5
|
+
`+t}function a(e,t){let n=t.data??new Uint8Array,r=n.byteLength>0?Buffer.from(n).toString(`base64`):``;return`\r\n--${e}\r\nContent-Type: ${t.contentType}; name="${t.filename}"\r\nContent-Transfer-Encoding: base64\r
|
|
6
|
+
Content-Disposition: attachment; filename="${t.filename}"\r\n\r\n`+r}function o(e){return e.name?`"${e.name}" <${e.email}>`:e.email}export{t as GmailOutboundProvider};
|
|
7
|
+
//# sourceMappingURL=gmail-outbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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(\n message: EmailOutboundMessage\n ): 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 `Content-Type: ${contentType}\\r\\n` + 'Content-Transfer-Encoding: 7bit\\r\\n\\r\\n' + content;\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\n ? Buffer.from(data).toString('base64')\n : '';\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\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CalendarEvent, CalendarEventInput, CalendarEventUpdateInput, CalendarListEventsQuery, CalendarListEventsResult, CalendarProvider } from "../calendar.js";
|
|
2
|
+
import { calendar_v3 } from "googleapis";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/providers/impls/google-calendar.d.ts
|
|
5
|
+
interface GoogleCalendarProviderOptions {
|
|
6
|
+
auth: calendar_v3.Options['auth'];
|
|
7
|
+
calendar?: calendar_v3.Calendar;
|
|
8
|
+
calendarId?: string;
|
|
9
|
+
}
|
|
10
|
+
declare class GoogleCalendarProvider implements CalendarProvider {
|
|
11
|
+
private readonly calendar;
|
|
12
|
+
private readonly defaultCalendarId;
|
|
13
|
+
private readonly auth;
|
|
14
|
+
constructor(options: GoogleCalendarProviderOptions);
|
|
15
|
+
listEvents(query: CalendarListEventsQuery): Promise<CalendarListEventsResult>;
|
|
16
|
+
createEvent(input: CalendarEventInput): Promise<CalendarEvent>;
|
|
17
|
+
updateEvent(calendarId: string, eventId: string, input: CalendarEventUpdateInput): Promise<CalendarEvent>;
|
|
18
|
+
deleteEvent(calendarId: string, eventId: string): Promise<void>;
|
|
19
|
+
private fromGoogleEvent;
|
|
20
|
+
private toGoogleEvent;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { GoogleCalendarProvider, GoogleCalendarProviderOptions };
|
|
24
|
+
//# sourceMappingURL=google-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;;AAgBa,cAhBb,sBAAA,YAAkC,gBAgBrB,CAAA;EAAkC,iBAAA,QAAA;EAAR,iBAAA,iBAAA;EAuBzB,iBAAA,IAAA;EAA6B,WAAA,CAAA,OAAA,EAlCjC,6BAkCiC;EAAR,UAAA,CAAA,KAAA,EAvBtB,uBAuBsB,CAAA,EAvBI,OAuBJ,CAvBY,wBAuBZ,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;EAjEX,QAAA,aAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{google as e}from"googleapis";var t=class{calendar;defaultCalendarId;auth;constructor(t){this.auth=t.auth,this.calendar=t.calendar??e.calendar({version:`v3`,auth:t.auth}),this.defaultCalendarId=t.calendarId??`primary`}async listEvents(e){let t=await this.calendar.events.list({calendarId:e.calendarId??this.defaultCalendarId,timeMin:e.timeMin?.toISOString(),timeMax:e.timeMax?.toISOString(),maxResults:e.maxResults,pageToken:e.pageToken,singleEvents:!0,orderBy:`startTime`,auth:this.auth});return{events:t.data.items?.map(t=>this.fromGoogleEvent(e.calendarId??this.defaultCalendarId,t))??[],nextPageToken:t.data.nextPageToken??void 0}}async createEvent(e){let t=e.calendarId??this.defaultCalendarId,n=await this.calendar.events.insert({calendarId:t,requestBody:this.toGoogleEvent(e),conferenceDataVersion:e.conference?.create?1:void 0,auth:this.auth});return this.fromGoogleEvent(t,n.data)}async updateEvent(e,t,n){let r=await this.calendar.events.patch({calendarId:e??this.defaultCalendarId,eventId:t,requestBody:this.toGoogleEvent(n),conferenceDataVersion:n.conference?.create?1:void 0,auth:this.auth});return this.fromGoogleEvent(e,r.data)}async deleteEvent(e,t){await this.calendar.events.delete({calendarId:e??this.defaultCalendarId,eventId:t,auth:this.auth})}fromGoogleEvent(e,t){let r=n(t.start),o=n(t.end),s=t.attendees?.map(e=>({email:e.email??``,name:e.displayName??void 0,optional:e.optional??void 0,responseStatus:i(e.responseStatus)}))??[],c=t.reminders?.overrides?.map(e=>({method:e.method??`popup`,minutesBeforeStart:e.minutes??0}))??[],l=a(t);return{id:t.id??``,calendarId:e,title:t.summary??``,description:t.description??void 0,location:t.location??void 0,start:r,end:o,allDay:t.start?.date?!0:void 0,attendees:s,reminders:c,conferenceLink:t.hangoutLink??t.conferenceData?.entryPoints?.find(e=>e.uri)?.uri??void 0,metadata:l,createdAt:t.created?new Date(t.created):void 0,updatedAt:t.updated?new Date(t.updated):void 0}}toGoogleEvent(e){let t={};return`title`in e&&e.title&&(t.summary=e.title),e.description!==void 0&&(t.description=e.description),e.location!==void 0&&(t.location=e.location),e.start&&(t.start=r(e.start,e.allDay)),e.end&&(t.end=r(e.end,e.allDay)),e.attendees&&(t.attendees=e.attendees.map(e=>({email:e.email,displayName:e.name,optional:e.optional,responseStatus:e.responseStatus}))),e.reminders&&(t.reminders={useDefault:!1,overrides:e.reminders.map(e=>({method:e.method,minutes:e.minutesBeforeStart}))}),e.conference?.create&&(t.conferenceData={createRequest:{requestId:`conf-${Date.now()}`}}),e.metadata&&(t.extendedProperties={...t.extendedProperties??{},private:{...t.extendedProperties?.private??{},...e.metadata}}),t}};function n(e){return e?e.dateTime?new Date(e.dateTime):e.date?new Date(`${e.date}T00:00:00`):new Date:new Date}function r(e,t){return t?{date:e.toISOString().slice(0,10)}:{dateTime:e.toISOString()}}function i(e){if(e)return[`needsAction`,`declined`,`tentative`,`accepted`].includes(e)?e:void 0}function a(e){let t={};return e.status&&(t.status=e.status),e.htmlLink&&(t.htmlLink=e.htmlLink),e.iCalUID&&(t.iCalUID=e.iCalUID),e.etag&&(t.etag=e.etag),e.conferenceData?.conferenceSolution?.name&&(t.conferenceSolution=e.conferenceData.conferenceSolution.name),e.extendedProperties?.private&&Object.entries(e.extendedProperties.private).forEach(([e,n])=>{typeof n==`string`&&(t[`extended.${e}`]=n)}),Object.keys(t).length>0?t:void 0}export{t as GoogleCalendarProvider};
|
|
2
|
+
//# sourceMappingURL=google-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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(query: CalendarListEventsQuery): 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(\n time?: calendar_v3.Schema$EventDateTime | null\n): 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(date: Date, allDay?: boolean): 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 = 'needsAction' | 'declined' | 'tentative' | '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(event: calendar_v3.Schema$Event): 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\n\n"],"mappings":"oCAiBA,IAAa,EAAb,KAAgE,CAC9D,SACA,kBACA,KAEA,YAAY,EAAwC,CAClD,KAAK,KAAO,EAAQ,KACpB,KAAK,SACH,EAAQ,UACR,EAAO,SAAS,CACd,QAAS,KACT,KAAM,EAAQ,KACf,CAAC,CACJ,KAAK,kBAAoB,EAAQ,YAAc,UAGjD,MAAM,WAAW,EAAmE,CAClF,IAAM,EAAW,MAAM,KAAK,SAAS,OAAO,KAAK,CAC/C,WAAY,EAAM,YAAc,KAAK,kBACrC,QAAS,EAAM,SAAS,aAAa,CACrC,QAAS,EAAM,SAAS,aAAa,CACrC,WAAY,EAAM,WAClB,UAAW,EAAM,UACjB,aAAc,GACd,QAAS,YACT,KAAM,KAAK,KACZ,CAAC,CAOF,MAAO,CACL,OALA,EAAS,KAAK,OAAO,IAAK,GACxB,KAAK,gBAAgB,EAAM,YAAc,KAAK,kBAAmB,EAAK,CACvE,EAAI,EAAE,CAIP,cAAe,EAAS,KAAK,eAAiB,IAAA,GAC/C,CAGH,MAAM,YAAY,EAAmD,CACnE,IAAM,EAAa,EAAM,YAAc,KAAK,kBACtC,EAAW,MAAM,KAAK,SAAS,OAAO,OAAO,CACjD,aACA,YAAa,KAAK,cAAc,EAAM,CACtC,sBAAuB,EAAM,YAAY,OAAS,EAAI,IAAA,GACtD,KAAM,KAAK,KACZ,CAAC,CACF,OAAO,KAAK,gBAAgB,EAAY,EAAS,KAAK,CAGxD,MAAM,YACJ,EACA,EACA,EACwB,CACxB,IAAM,EAAW,MAAM,KAAK,SAAS,OAAO,MAAM,CAChD,WAAY,GAAc,KAAK,kBAC/B,UACA,YAAa,KAAK,cAAc,EAAM,CACtC,sBAAuB,EAAM,YAAY,OAAS,EAAI,IAAA,GACtD,KAAM,KAAK,KACZ,CAAC,CACF,OAAO,KAAK,gBAAgB,EAAY,EAAS,KAAK,CAGxD,MAAM,YAAY,EAAoB,EAAgC,CACpE,MAAM,KAAK,SAAS,OAAO,OAAO,CAChC,WAAY,GAAc,KAAK,kBAC/B,UACA,KAAM,KAAK,KACZ,CAAC,CAGJ,gBACE,EACA,EACe,CACf,IAAM,EAAQ,EAAc,EAAM,MAAM,CAClC,EAAM,EAAc,EAAM,IAAI,CAC9B,EACJ,EAAM,WAAW,IAAK,IAAc,CAClC,MAAO,EAAS,OAAS,GACzB,KAAM,EAAS,aAAe,IAAA,GAC9B,SAAU,EAAS,UAAY,IAAA,GAC/B,eAAgB,EAAwB,EAAS,eAAe,CACjE,EAAE,EAAI,EAAE,CACL,EACJ,EAAM,WAAW,WAAW,IAAK,IAAc,CAC7C,OAAS,EAAS,QAAgC,QAClD,mBAAoB,EAAS,SAAW,EACzC,EAAE,EAAI,EAAE,CACL,EAAW,EAAc,EAAM,CACrC,MAAO,CACL,GAAI,EAAM,IAAM,GAChB,aACA,MAAO,EAAM,SAAW,GACxB,YAAa,EAAM,aAAe,IAAA,GAClC,SAAU,EAAM,UAAY,IAAA,GAC5B,QACA,MACA,OAAQ,EAAM,OAAO,KAAO,GAAO,IAAA,GACnC,YACA,YACA,eACE,EAAM,aACN,EAAM,gBAAgB,aAAa,KAAM,GAAU,EAAM,IAAI,EAAE,KAC/D,IAAA,GACF,WACA,UAAW,EAAM,QAAU,IAAI,KAAK,EAAM,QAAQ,CAAG,IAAA,GACrD,UAAW,EAAM,QAAU,IAAI,KAAK,EAAM,QAAQ,CAAG,IAAA,GACtD,CAGH,cACE,EAC0B,CAC1B,IAAMA,EAAkC,EAAE,CA2C1C,MA1CI,UAAW,GAAS,EAAM,QAAO,EAAM,QAAU,EAAM,OACvD,EAAM,cAAgB,IAAA,KAAW,EAAM,YAAc,EAAM,aAC3D,EAAM,WAAa,IAAA,KAAW,EAAM,SAAW,EAAM,UACrD,EAAM,QACR,EAAM,MAAQ,EAAe,EAAM,MAAO,EAAM,OAAO,EAErD,EAAM,MACR,EAAM,IAAM,EAAe,EAAM,IAAK,EAAM,OAAO,EAEjD,EAAM,YACR,EAAM,UAAY,EAAM,UAAU,IAAK,IAAc,CACnD,MAAO,EAAS,MAChB,YAAa,EAAS,KACtB,SAAU,EAAS,SACnB,eAAgB,EAAS,eAC1B,EAAE,EAED,EAAM,YACR,EAAM,UAAY,CAChB,WAAY,GACZ,UAAW,EAAM,UAAU,IAAK,IAAc,CAC5C,OAAQ,EAAS,OACjB,QAAS,EAAS,mBACnB,EAAE,CACJ,EAEC,EAAM,YAAY,SACpB,EAAM,eAAiB,CACrB,cAAe,CACb,UAAW,QAAQ,KAAK,KAAK,GAC9B,CACF,EAEC,EAAM,WACR,EAAM,mBAAqB,CACzB,GAAI,EAAM,oBAAsB,EAAE,CAClC,QAAS,CACP,GAAI,EAAM,oBAAoB,SAAW,EAAE,CAC3C,GAAG,EAAM,SACV,CACF,EAEI,IAIX,SAAS,EACP,EACM,CAIN,OAHK,EACD,EAAK,SAAiB,IAAI,KAAK,EAAK,SAAS,CAC7C,EAAK,KAAa,IAAI,KAAK,GAAG,EAAK,KAAK,WAAW,CAChD,IAAI,KAHO,IAAI,KAMxB,SAAS,EAAe,EAAY,EAAoD,CAItF,OAHI,EACK,CAAE,KAAM,EAAK,aAAa,CAAC,MAAM,EAAG,GAAG,CAAE,CAE3C,CAAE,SAAU,EAAK,aAAa,CAAE,CAKzC,SAAS,EACP,EACoC,CAC/B,KAOL,MAN0C,CACxC,cACA,WACA,YACA,WACD,CACc,SAAS,EAAiC,CACpD,EACD,IAAA,GAGN,SAAS,EAAc,EAAqE,CAC1F,IAAMC,EAAmC,EAAE,CAe3C,OAdI,EAAM,SAAQ,EAAS,OAAS,EAAM,QACtC,EAAM,WAAU,EAAS,SAAW,EAAM,UAC1C,EAAM,UAAS,EAAS,QAAU,EAAM,SACxC,EAAM,OAAM,EAAS,KAAO,EAAM,MAClC,EAAM,gBAAgB,oBAAoB,OAC5C,EAAS,mBAAqB,EAAM,eAAe,mBAAmB,MAEpE,EAAM,oBAAoB,SAC5B,OAAO,QAAQ,EAAM,mBAAmB,QAAQ,CAAC,SAAS,CAAC,EAAK,KAAW,CACrE,OAAO,GAAU,WACnB,EAAS,YAAY,KAAS,IAEhC,CAEG,OAAO,KAAK,EAAS,CAAC,OAAS,EAAI,EAAW,IAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MistralLLMProvider, MistralLLMProviderOptions } from "./mistral-llm.js";
|
|
2
|
+
import { MistralEmbeddingProvider, MistralEmbeddingProviderOptions } from "./mistral-embedding.js";
|
|
3
|
+
import { QdrantVectorProvider, QdrantVectorProviderOptions } from "./qdrant-vector.js";
|
|
4
|
+
import { GmailInboundProvider, GmailInboundProviderOptions } from "./gmail-inbound.js";
|
|
5
|
+
import { GmailOutboundProvider, GmailOutboundProviderOptions } from "./gmail-outbound.js";
|
|
6
|
+
import { GoogleCalendarProvider, GoogleCalendarProviderOptions } from "./google-calendar.js";
|
|
7
|
+
import { ElevenLabsVoiceProvider, ElevenLabsVoiceProviderOptions } from "./elevenlabs-voice.js";
|
|
8
|
+
import { GoogleCloudStorageProvider, GoogleCloudStorageProviderOptions } from "./gcs-storage.js";
|
|
9
|
+
import { StripePaymentsProvider, StripePaymentsProviderOptions } from "./stripe-payments.js";
|
|
10
|
+
import { PostmarkEmailProvider, PostmarkEmailProviderOptions } from "./postmark-email.js";
|
|
11
|
+
import { TwilioSmsProvider, TwilioSmsProviderOptions } from "./twilio-sms.js";
|
|
12
|
+
import { PowensAccount, PowensAccountListResponse, PowensBalance, PowensClient, PowensClientError, PowensClientOptions, PowensConnectionStatusResponse, PowensEnvironment, PowensTransaction, PowensTransactionListResponse } from "./powens-client.js";
|
|
13
|
+
import { PowensOpenBankingProvider, PowensOpenBankingProviderOptions } from "./powens-openbanking.js";
|
|
14
|
+
import { IntegrationProviderFactory } from "./provider-factory.js";
|
|
15
|
+
export { ElevenLabsVoiceProvider, ElevenLabsVoiceProviderOptions, GmailInboundProvider, GmailInboundProviderOptions, GmailOutboundProvider, GmailOutboundProviderOptions, GoogleCalendarProvider, GoogleCalendarProviderOptions, GoogleCloudStorageProvider, GoogleCloudStorageProviderOptions, IntegrationProviderFactory, MistralEmbeddingProvider, MistralEmbeddingProviderOptions, MistralLLMProvider, MistralLLMProviderOptions, PostmarkEmailProvider, PostmarkEmailProviderOptions, PowensAccount, PowensAccountListResponse, PowensBalance, PowensClient, PowensClientError, PowensClientOptions, PowensConnectionStatusResponse, PowensEnvironment, PowensOpenBankingProvider, PowensOpenBankingProviderOptions, PowensTransaction, PowensTransactionListResponse, QdrantVectorProvider, QdrantVectorProviderOptions, StripePaymentsProvider, StripePaymentsProviderOptions, TwilioSmsProvider, TwilioSmsProviderOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{MistralLLMProvider as e}from"./mistral-llm.js";import{MistralEmbeddingProvider as t}from"./mistral-embedding.js";import{QdrantVectorProvider as n}from"./qdrant-vector.js";import{GmailInboundProvider as r}from"./gmail-inbound.js";import{GmailOutboundProvider as i}from"./gmail-outbound.js";import{GoogleCalendarProvider as a}from"./google-calendar.js";import{ElevenLabsVoiceProvider as o}from"./elevenlabs-voice.js";import{GoogleCloudStorageProvider as s}from"./gcs-storage.js";import{StripePaymentsProvider as c}from"./stripe-payments.js";import{PostmarkEmailProvider as l}from"./postmark-email.js";import{TwilioSmsProvider as u}from"./twilio-sms.js";import{PowensClient as d,PowensClientError as f}from"./powens-client.js";import{PowensOpenBankingProvider as p}from"./powens-openbanking.js";import{IntegrationProviderFactory as m}from"./provider-factory.js";export{o as ElevenLabsVoiceProvider,r as GmailInboundProvider,i as GmailOutboundProvider,a as GoogleCalendarProvider,s as GoogleCloudStorageProvider,m as IntegrationProviderFactory,t as MistralEmbeddingProvider,e as MistralLLMProvider,l as PostmarkEmailProvider,d as PowensClient,f as PowensClientError,p as PowensOpenBankingProvider,n as QdrantVectorProvider,c as StripePaymentsProvider,u as TwilioSmsProvider};
|