@lssm/lib.contracts-integrations 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +536 -0
- package/dist/contracts-integrations.feature.d.ts +1 -0
- package/dist/contracts-integrations.feature.js +2 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +22 -0
- package/dist/integrations/advertising/index.d.ts +4 -0
- package/dist/integrations/advertising/index.js +2 -0
- package/dist/integrations/advertising/recipe-schema.d.ts +114 -0
- package/dist/integrations/advertising/recipe-schema.js +2 -0
- package/dist/integrations/advertising/recipe.d.ts +53 -0
- package/dist/integrations/advertising/recipe.js +1 -0
- package/dist/integrations/advertising/specs.d.ts +5 -0
- package/dist/integrations/advertising/specs.js +2 -0
- package/dist/integrations/advertising/types.d.ts +97 -0
- package/dist/integrations/advertising/types.js +2 -0
- package/dist/integrations/attio/events.d.ts +4 -0
- package/dist/integrations/attio/events.js +2 -0
- package/dist/integrations/attio/events.test.d.ts +1 -0
- package/dist/integrations/attio/index.d.ts +2 -0
- package/dist/integrations/attio/index.js +2 -0
- package/dist/integrations/attio/operations.d.ts +4 -0
- package/dist/integrations/attio/operations.js +2 -0
- package/dist/integrations/attio/operations.test.d.ts +1 -0
- package/dist/integrations/auth-helpers.d.ts +58 -0
- package/dist/integrations/auth-helpers.js +2 -0
- package/dist/integrations/auth-helpers.test.d.ts +1 -0
- package/dist/integrations/auth.d.ts +96 -0
- package/dist/integrations/auth.js +2 -0
- package/dist/integrations/auth.test.d.ts +1 -0
- package/dist/integrations/binding.d.ts +1 -0
- package/dist/integrations/binding.js +1 -0
- package/dist/integrations/byok.d.ts +75 -0
- package/dist/integrations/byok.js +2 -0
- package/dist/integrations/byok.test.d.ts +1 -0
- package/dist/integrations/catalog.d.ts +84 -0
- package/dist/integrations/catalog.js +2 -0
- package/dist/integrations/catalog.test.d.ts +1 -0
- package/dist/integrations/clay/events.d.ts +93 -0
- package/dist/integrations/clay/events.js +2 -0
- package/dist/integrations/clay/events.test.d.ts +1 -0
- package/dist/integrations/clay/index.d.ts +2 -0
- package/dist/integrations/clay/index.js +2 -0
- package/dist/integrations/clay/operations.d.ts +4 -0
- package/dist/integrations/clay/operations.js +2 -0
- package/dist/integrations/clay/operations.test.d.ts +1 -0
- package/dist/integrations/connection.d.ts +68 -0
- package/dist/integrations/connection.js +1 -0
- package/dist/integrations/credentials.d.ts +56 -0
- package/dist/integrations/credentials.js +2 -0
- package/dist/integrations/credentials.test.d.ts +1 -0
- package/dist/integrations/deployment-topology-model.d.ts +75 -0
- package/dist/integrations/deployment-topology-model.js +2 -0
- package/dist/integrations/deployment-topology-receipt.d.ts +8 -0
- package/dist/integrations/deployment-topology-receipt.js +2 -0
- package/dist/integrations/deployment-topology-validation.d.ts +5 -0
- package/dist/integrations/deployment-topology-validation.js +2 -0
- package/dist/integrations/deployment-topology.d.ts +3 -0
- package/dist/integrations/deployment-topology.js +2 -0
- package/dist/integrations/deployment-topology.test.d.ts +1 -0
- package/dist/integrations/docs/integrations.docblock.d.ts +2 -0
- package/dist/integrations/docs/integrations.docblock.js +101 -0
- package/dist/integrations/email-operations.d.ts +152 -0
- package/dist/integrations/email-operations.js +2 -0
- package/dist/integrations/gtm/capability-ledger.d.ts +48 -0
- package/dist/integrations/gtm/capability-ledger.fixture-helpers.d.ts +9 -0
- package/dist/integrations/gtm/capability-ledger.fixture-helpers.js +2 -0
- package/dist/integrations/gtm/capability-ledger.fixtures.d.ts +5 -0
- package/dist/integrations/gtm/capability-ledger.fixtures.js +2 -0
- package/dist/integrations/gtm/capability-ledger.js +2 -0
- package/dist/integrations/gtm/capability-ledger.test.d.ts +1 -0
- package/dist/integrations/gtm/hosted-mcp.d.ts +12 -0
- package/dist/integrations/gtm/hosted-mcp.js +2 -0
- package/dist/integrations/gtm/index.d.ts +5 -0
- package/dist/integrations/gtm/index.js +2 -0
- package/dist/integrations/gtm/inventory/attio.d.ts +2 -0
- package/dist/integrations/gtm/inventory/attio.js +2 -0
- package/dist/integrations/gtm/inventory/clay.d.ts +2 -0
- package/dist/integrations/gtm/inventory/clay.js +2 -0
- package/dist/integrations/gtm/inventory/fullenrich.d.ts +2 -0
- package/dist/integrations/gtm/inventory/fullenrich.js +2 -0
- package/dist/integrations/gtm/inventory/index.d.ts +4 -0
- package/dist/integrations/gtm/inventory/index.js +2 -0
- package/dist/integrations/gtm/inventory/inventory.test.d.ts +1 -0
- package/dist/integrations/gtm/inventory/types.d.ts +26 -0
- package/dist/integrations/gtm/inventory/types.js +1 -0
- package/dist/integrations/gtm/preflight.d.ts +20 -0
- package/dist/integrations/gtm/preflight.js +2 -0
- package/dist/integrations/gtm/preflight.test.d.ts +1 -0
- package/dist/integrations/gtm/schemas.d.ts +291 -0
- package/dist/integrations/gtm/schemas.js +2 -0
- package/dist/integrations/gtm/webhook-ingress.d.ts +37 -0
- package/dist/integrations/gtm/webhook-ingress.js +2 -0
- package/dist/integrations/gtm/webhook-ingress.test.d.ts +1 -0
- package/dist/integrations/health/contracts/activities.d.ts +162 -0
- package/dist/integrations/health/contracts/activities.js +2 -0
- package/dist/integrations/health/contracts/biometrics.d.ts +156 -0
- package/dist/integrations/health/contracts/biometrics.js +2 -0
- package/dist/integrations/health/contracts/contracts.test.d.ts +1 -0
- package/dist/integrations/health/contracts/index.d.ts +10 -0
- package/dist/integrations/health/contracts/index.js +2 -0
- package/dist/integrations/health/contracts/nutrition.d.ts +162 -0
- package/dist/integrations/health/contracts/nutrition.js +2 -0
- package/dist/integrations/health/contracts/sleep.d.ts +166 -0
- package/dist/integrations/health/contracts/sleep.js +2 -0
- package/dist/integrations/health/contracts/webhooks.d.ts +73 -0
- package/dist/integrations/health/contracts/webhooks.js +2 -0
- package/dist/integrations/health/contracts/workouts.d.ts +166 -0
- package/dist/integrations/health/contracts/workouts.js +2 -0
- package/dist/integrations/health/guards.d.ts +8 -0
- package/dist/integrations/health/guards.js +2 -0
- package/dist/integrations/health/guards.test.d.ts +1 -0
- package/dist/integrations/health/health.capability.d.ts +1 -0
- package/dist/integrations/health/health.capability.js +2 -0
- package/dist/integrations/health/health.feature.d.ts +1 -0
- package/dist/integrations/health/health.feature.js +2 -0
- package/dist/integrations/health/models.d.ts +361 -0
- package/dist/integrations/health/models.js +2 -0
- package/dist/integrations/health/telemetry.d.ts +17 -0
- package/dist/integrations/health/telemetry.js +2 -0
- package/dist/integrations/health/telemetry.test.d.ts +1 -0
- package/dist/integrations/health.d.ts +17 -0
- package/dist/integrations/health.js +2 -0
- package/dist/integrations/health.test.d.ts +1 -0
- package/dist/integrations/index.d.ts +30 -0
- package/dist/integrations/index.js +22 -0
- package/dist/integrations/integrations.capability.d.ts +1 -0
- package/dist/integrations/integrations.capability.js +2 -0
- package/dist/integrations/integrations.feature.d.ts +5 -0
- package/dist/integrations/integrations.feature.js +2 -0
- package/dist/integrations/linkedin/advertising.d.ts +52 -0
- package/dist/integrations/linkedin/advertising.js +1 -0
- package/dist/integrations/linkedin/analytics.d.ts +25 -0
- package/dist/integrations/linkedin/analytics.js +1 -0
- package/dist/integrations/linkedin/capabilities.d.ts +54 -0
- package/dist/integrations/linkedin/capabilities.js +2 -0
- package/dist/integrations/linkedin/capability-evaluation.test.d.ts +1 -0
- package/dist/integrations/linkedin/community.d.ts +77 -0
- package/dist/integrations/linkedin/community.js +1 -0
- package/dist/integrations/linkedin/credentials.d.ts +17 -0
- package/dist/integrations/linkedin/credentials.js +2 -0
- package/dist/integrations/linkedin/host.d.ts +53 -0
- package/dist/integrations/linkedin/host.js +2 -0
- package/dist/integrations/linkedin/host.test.d.ts +1 -0
- package/dist/integrations/linkedin/identity.d.ts +29 -0
- package/dist/integrations/linkedin/identity.js +1 -0
- package/dist/integrations/linkedin/index.d.ts +16 -0
- package/dist/integrations/linkedin/index.js +2 -0
- package/dist/integrations/linkedin/installation.d.ts +54 -0
- package/dist/integrations/linkedin/installation.js +2 -0
- package/dist/integrations/linkedin/linkedin.test.d.ts +1 -0
- package/dist/integrations/linkedin/media-job-state.d.ts +70 -0
- package/dist/integrations/linkedin/media-job-state.js +2 -0
- package/dist/integrations/linkedin/media-job.d.ts +88 -0
- package/dist/integrations/linkedin/media-job.js +2 -0
- package/dist/integrations/linkedin/media-session.d.ts +37 -0
- package/dist/integrations/linkedin/media-session.js +2 -0
- package/dist/integrations/linkedin/media.d.ts +51 -0
- package/dist/integrations/linkedin/media.js +2 -0
- package/dist/integrations/linkedin/messaging.d.ts +70 -0
- package/dist/integrations/linkedin/messaging.js +1 -0
- package/dist/integrations/linkedin/models.d.ts +42 -0
- package/dist/integrations/linkedin/models.js +1 -0
- package/dist/integrations/linkedin/native-publication.d.ts +43 -0
- package/dist/integrations/linkedin/native-publication.js +2 -0
- package/dist/integrations/linkedin/native-withdrawal.d.ts +12 -0
- package/dist/integrations/linkedin/native-withdrawal.js +2 -0
- package/dist/integrations/linkedin/operation-catalog.d.ts +314 -0
- package/dist/integrations/linkedin/operation-catalog.js +2 -0
- package/dist/integrations/linkedin/operations.d.ts +66 -0
- package/dist/integrations/linkedin/operations.js +2 -0
- package/dist/integrations/linkedin/provider.d.ts +72 -0
- package/dist/integrations/linkedin/provider.js +2 -0
- package/dist/integrations/linkedin/sales.d.ts +57 -0
- package/dist/integrations/linkedin/sales.js +1 -0
- package/dist/integrations/linkedin/sync.d.ts +41 -0
- package/dist/integrations/linkedin/sync.js +1 -0
- package/dist/integrations/linkedin/webhooks.d.ts +38 -0
- package/dist/integrations/linkedin/webhooks.js +1 -0
- package/dist/integrations/meeting-recorder/contracts/index.d.ts +7 -0
- package/dist/integrations/meeting-recorder/contracts/index.js +2 -0
- package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +451 -0
- package/dist/integrations/meeting-recorder/contracts/meetings.js +2 -0
- package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +166 -0
- package/dist/integrations/meeting-recorder/contracts/transcripts.js +2 -0
- package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +85 -0
- package/dist/integrations/meeting-recorder/contracts/webhooks.js +2 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +1 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +2 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +5 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +2 -0
- package/dist/integrations/meeting-recorder/models.d.ts +402 -0
- package/dist/integrations/meeting-recorder/models.js +2 -0
- package/dist/integrations/meeting-recorder/telemetry.d.ts +13 -0
- package/dist/integrations/meeting-recorder/telemetry.js +2 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts +282 -0
- package/dist/integrations/openbanking/contracts/accounts.js +2 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts +158 -0
- package/dist/integrations/openbanking/contracts/balances.js +2 -0
- package/dist/integrations/openbanking/contracts/index.d.ts +7 -0
- package/dist/integrations/openbanking/contracts/index.js +2 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts +206 -0
- package/dist/integrations/openbanking/contracts/transactions.js +2 -0
- package/dist/integrations/openbanking/guards.d.ts +8 -0
- package/dist/integrations/openbanking/guards.js +2 -0
- package/dist/integrations/openbanking/guards.test.d.ts +1 -0
- package/dist/integrations/openbanking/models.d.ts +223 -0
- package/dist/integrations/openbanking/models.js +2 -0
- package/dist/integrations/openbanking/openbanking.capability.d.ts +1 -0
- package/dist/integrations/openbanking/openbanking.capability.js +2 -0
- package/dist/integrations/openbanking/openbanking.feature.d.ts +5 -0
- package/dist/integrations/openbanking/openbanking.feature.js +2 -0
- package/dist/integrations/openbanking/telemetry.d.ts +12 -0
- package/dist/integrations/openbanking/telemetry.js +2 -0
- package/dist/integrations/operations.d.ts +430 -0
- package/dist/integrations/operations.js +22 -0
- package/dist/integrations/operations.test.d.ts +1 -0
- package/dist/integrations/providers/analytics-reader.d.ts +103 -0
- package/dist/integrations/providers/analytics-reader.js +1 -0
- package/dist/integrations/providers/analytics-writer.d.ts +6 -0
- package/dist/integrations/providers/analytics-writer.js +1 -0
- package/dist/integrations/providers/analytics.d.ts +47 -0
- package/dist/integrations/providers/analytics.js +1 -0
- package/dist/integrations/providers/apify.d.ts +3 -0
- package/dist/integrations/providers/apify.js +2 -0
- package/dist/integrations/providers/apple-health.d.ts +3 -0
- package/dist/integrations/providers/apple-health.js +2 -0
- package/dist/integrations/providers/async-media-record.d.ts +26 -0
- package/dist/integrations/providers/async-media-record.js +2 -0
- package/dist/integrations/providers/async-media.d.ts +112 -0
- package/dist/integrations/providers/async-media.js +1 -0
- package/dist/integrations/providers/attio.d.ts +4 -0
- package/dist/integrations/providers/attio.js +2 -0
- package/dist/integrations/providers/bright-data.d.ts +3 -0
- package/dist/integrations/providers/bright-data.js +2 -0
- package/dist/integrations/providers/browserbase.d.ts +3 -0
- package/dist/integrations/providers/browserbase.js +2 -0
- package/dist/integrations/providers/calendar.d.js +1 -0
- package/dist/integrations/providers/calendar.d.ts +81 -0
- package/dist/integrations/providers/calendar.js +1 -0
- package/dist/integrations/providers/catalog.d.ts +2 -0
- package/dist/integrations/providers/catalog.js +2 -0
- package/dist/integrations/providers/clay.d.ts +4 -0
- package/dist/integrations/providers/clay.js +2 -0
- package/dist/integrations/providers/communication-channel.d.ts +45 -0
- package/dist/integrations/providers/communication-channel.js +2 -0
- package/dist/integrations/providers/communication-channel.test.d.ts +1 -0
- package/dist/integrations/providers/composio.d.ts +3 -0
- package/dist/integrations/providers/composio.js +2 -0
- package/dist/integrations/providers/crm-external-profiles.test.d.ts +1 -0
- package/dist/integrations/providers/crm-fixture-core.d.ts +20 -0
- package/dist/integrations/providers/crm-fixture-core.js +2 -0
- package/dist/integrations/providers/crm-hubspot-fixture.d.ts +14 -0
- package/dist/integrations/providers/crm-hubspot-fixture.js +2 -0
- package/dist/integrations/providers/crm-salesforce-fixture.d.ts +17 -0
- package/dist/integrations/providers/crm-salesforce-fixture.js +2 -0
- package/dist/integrations/providers/crm-write-proposal-types.d.ts +83 -0
- package/dist/integrations/providers/crm-write-proposal-types.js +2 -0
- package/dist/integrations/providers/crm-write-proposal.d.ts +7 -0
- package/dist/integrations/providers/crm-write-proposal.js +2 -0
- package/dist/integrations/providers/crm-write-proposal.test.d.ts +1 -0
- package/dist/integrations/providers/crm.d.ts +94 -0
- package/dist/integrations/providers/crm.js +2 -0
- package/dist/integrations/providers/crm.test.d.ts +1 -0
- package/dist/integrations/providers/database.d.ts +12 -0
- package/dist/integrations/providers/database.js +1 -0
- package/dist/integrations/providers/deepgram.d.ts +3 -0
- package/dist/integrations/providers/deepgram.js +2 -0
- package/dist/integrations/providers/direct-fetch.d.ts +3 -0
- package/dist/integrations/providers/direct-fetch.js +2 -0
- package/dist/integrations/providers/eightsleep.d.ts +3 -0
- package/dist/integrations/providers/eightsleep.js +2 -0
- package/dist/integrations/providers/elevenlabs.d.ts +3 -0
- package/dist/integrations/providers/elevenlabs.js +2 -0
- package/dist/integrations/providers/email-delivery-events.d.ts +22 -0
- package/dist/integrations/providers/email-delivery-events.js +1 -0
- package/dist/integrations/providers/email.d.ts +187 -0
- package/dist/integrations/providers/email.js +1 -0
- package/dist/integrations/providers/embedding.d.ts +52 -0
- package/dist/integrations/providers/embedding.js +1 -0
- package/dist/integrations/providers/embedding.test.d.ts +1 -0
- package/dist/integrations/providers/fal-image.d.ts +3 -0
- package/dist/integrations/providers/fal-image.js +2 -0
- package/dist/integrations/providers/fal.d.ts +3 -0
- package/dist/integrations/providers/fal.js +2 -0
- package/dist/integrations/providers/fathom.d.ts +3 -0
- package/dist/integrations/providers/fathom.js +2 -0
- package/dist/integrations/providers/firecrawl.d.ts +3 -0
- package/dist/integrations/providers/firecrawl.js +2 -0
- package/dist/integrations/providers/fireflies.d.ts +3 -0
- package/dist/integrations/providers/fireflies.js +2 -0
- package/dist/integrations/providers/fitbit.d.ts +3 -0
- package/dist/integrations/providers/fitbit.js +2 -0
- package/dist/integrations/providers/fullenrich.d.ts +3 -0
- package/dist/integrations/providers/fullenrich.js +2 -0
- package/dist/integrations/providers/garmin.d.ts +3 -0
- package/dist/integrations/providers/garmin.js +2 -0
- package/dist/integrations/providers/gcs-storage.d.ts +3 -0
- package/dist/integrations/providers/gcs-storage.js +2 -0
- package/dist/integrations/providers/gmail.d.ts +3 -0
- package/dist/integrations/providers/gmail.js +2 -0
- package/dist/integrations/providers/google-calendar.d.ts +3 -0
- package/dist/integrations/providers/google-calendar.js +2 -0
- package/dist/integrations/providers/google-drive.d.ts +54 -0
- package/dist/integrations/providers/google-drive.js +2 -0
- package/dist/integrations/providers/gradium.d.ts +3 -0
- package/dist/integrations/providers/gradium.js +2 -0
- package/dist/integrations/providers/granola.d.ts +3 -0
- package/dist/integrations/providers/granola.js +2 -0
- package/dist/integrations/providers/gtm-providers.test.d.ts +1 -0
- package/dist/integrations/providers/health-provider-shared.d.ts +28 -0
- package/dist/integrations/providers/health-provider-shared.js +2 -0
- package/dist/integrations/providers/health-providers.test.d.ts +1 -0
- package/dist/integrations/providers/health.d.ts +186 -0
- package/dist/integrations/providers/health.js +1 -0
- package/dist/integrations/providers/higgsfield.d.ts +3 -0
- package/dist/integrations/providers/higgsfield.js +2 -0
- package/dist/integrations/providers/image.d.ts +85 -0
- package/dist/integrations/providers/image.js +2 -0
- package/dist/integrations/providers/index.d.ts +101 -0
- package/dist/integrations/providers/index.js +2 -0
- package/dist/integrations/providers/jira.d.ts +3 -0
- package/dist/integrations/providers/jira.js +2 -0
- package/dist/integrations/providers/linear.d.ts +3 -0
- package/dist/integrations/providers/linear.js +2 -0
- package/dist/integrations/providers/linkedin-community.d.ts +3 -0
- package/dist/integrations/providers/linkedin-community.js +2 -0
- package/dist/integrations/providers/linkedin-marketing.d.ts +3 -0
- package/dist/integrations/providers/linkedin-marketing.js +2 -0
- package/dist/integrations/providers/linkedin-member.d.ts +3 -0
- package/dist/integrations/providers/linkedin-member.js +2 -0
- package/dist/integrations/providers/linkedin-messaging.d.ts +3 -0
- package/dist/integrations/providers/linkedin-messaging.js +2 -0
- package/dist/integrations/providers/linkedin-providers.test.d.ts +1 -0
- package/dist/integrations/providers/linkedin-sales-navigator.d.ts +3 -0
- package/dist/integrations/providers/linkedin-sales-navigator.js +2 -0
- package/dist/integrations/providers/linkedin-spec-shared.d.ts +16 -0
- package/dist/integrations/providers/linkedin-spec-shared.js +2 -0
- package/dist/integrations/providers/linkup.d.ts +3 -0
- package/dist/integrations/providers/linkup.js +2 -0
- package/dist/integrations/providers/llm.d.ts +79 -0
- package/dist/integrations/providers/llm.js +1 -0
- package/dist/integrations/providers/massive.d.ts +5 -0
- package/dist/integrations/providers/massive.js +2 -0
- package/dist/integrations/providers/meeting-capture.d.ts +56 -0
- package/dist/integrations/providers/meeting-capture.js +1 -0
- package/dist/integrations/providers/meeting-recorder.d.ts +129 -0
- package/dist/integrations/providers/meeting-recorder.js +1 -0
- package/dist/integrations/providers/messaging-github.d.ts +9 -0
- package/dist/integrations/providers/messaging-github.js +2 -0
- package/dist/integrations/providers/messaging-matrix.d.ts +3 -0
- package/dist/integrations/providers/messaging-matrix.js +2 -0
- package/dist/integrations/providers/messaging-slack.d.ts +9 -0
- package/dist/integrations/providers/messaging-slack.js +2 -0
- package/dist/integrations/providers/messaging-teams.d.ts +10 -0
- package/dist/integrations/providers/messaging-teams.js +2 -0
- package/dist/integrations/providers/messaging-telegram.d.ts +3 -0
- package/dist/integrations/providers/messaging-telegram.js +2 -0
- package/dist/integrations/providers/messaging-whatsapp-meta.d.ts +3 -0
- package/dist/integrations/providers/messaging-whatsapp-meta.js +2 -0
- package/dist/integrations/providers/messaging-whatsapp-twilio.d.ts +3 -0
- package/dist/integrations/providers/messaging-whatsapp-twilio.js +2 -0
- package/dist/integrations/providers/messaging.d.ts +30 -0
- package/dist/integrations/providers/messaging.js +1 -0
- package/dist/integrations/providers/mistral-conversational.d.ts +3 -0
- package/dist/integrations/providers/mistral-conversational.js +2 -0
- package/dist/integrations/providers/mistral-stt.d.ts +3 -0
- package/dist/integrations/providers/mistral-stt.js +2 -0
- package/dist/integrations/providers/mistral.d.ts +3 -0
- package/dist/integrations/providers/mistral.js +2 -0
- package/dist/integrations/providers/mode-exemptions.d.ts +10 -0
- package/dist/integrations/providers/mode-exemptions.js +2 -0
- package/dist/integrations/providers/myfitnesspal.d.ts +3 -0
- package/dist/integrations/providers/myfitnesspal.js +2 -0
- package/dist/integrations/providers/notion.d.ts +9 -0
- package/dist/integrations/providers/notion.js +2 -0
- package/dist/integrations/providers/openai-image.d.ts +3 -0
- package/dist/integrations/providers/openai-image.js +2 -0
- package/dist/integrations/providers/openai-realtime.d.ts +3 -0
- package/dist/integrations/providers/openai-realtime.js +2 -0
- package/dist/integrations/providers/openbanking.d.ts +125 -0
- package/dist/integrations/providers/openbanking.js +1 -0
- package/dist/integrations/providers/openwearables.d.ts +3 -0
- package/dist/integrations/providers/openwearables.js +2 -0
- package/dist/integrations/providers/oura.d.ts +3 -0
- package/dist/integrations/providers/oura.js +2 -0
- package/dist/integrations/providers/oxylabs.d.ts +3 -0
- package/dist/integrations/providers/oxylabs.js +2 -0
- package/dist/integrations/providers/payments/capabilities-billing.d.ts +67 -0
- package/dist/integrations/providers/payments/capabilities-billing.js +1 -0
- package/dist/integrations/providers/payments/capabilities-payments.d.ts +57 -0
- package/dist/integrations/providers/payments/capabilities-payments.js +1 -0
- package/dist/integrations/providers/payments/capabilities.d.ts +2 -0
- package/dist/integrations/providers/payments/capabilities.js +1 -0
- package/dist/integrations/providers/payments/context.d.ts +75 -0
- package/dist/integrations/providers/payments/context.js +2 -0
- package/dist/integrations/providers/payments/provider.d.ts +22 -0
- package/dist/integrations/providers/payments/provider.js +1 -0
- package/dist/integrations/providers/payments/resources.d.ts +97 -0
- package/dist/integrations/providers/payments/resources.js +1 -0
- package/dist/integrations/providers/payments/shared.d.ts +61 -0
- package/dist/integrations/providers/payments/shared.js +2 -0
- package/dist/integrations/providers/payments.d.ts +5 -0
- package/dist/integrations/providers/payments.js +2 -0
- package/dist/integrations/providers/payments.test.d.ts +1 -0
- package/dist/integrations/providers/paypal.d.ts +3 -0
- package/dist/integrations/providers/paypal.js +2 -0
- package/dist/integrations/providers/peloton.d.ts +3 -0
- package/dist/integrations/providers/peloton.js +2 -0
- package/dist/integrations/providers/posthog-llm-telemetry.d.ts +51 -0
- package/dist/integrations/providers/posthog-llm-telemetry.js +2 -0
- package/dist/integrations/providers/posthog.d.ts +3 -0
- package/dist/integrations/providers/posthog.js +2 -0
- package/dist/integrations/providers/postmark.d.ts +3 -0
- package/dist/integrations/providers/postmark.js +2 -0
- package/dist/integrations/providers/powens.d.ts +3 -0
- package/dist/integrations/providers/powens.js +2 -0
- package/dist/integrations/providers/project-management.d.ts +196 -0
- package/dist/integrations/providers/project-management.js +2 -0
- package/dist/integrations/providers/provider-delta.d.ts +45 -0
- package/dist/integrations/providers/provider-delta.js +2 -0
- package/dist/integrations/providers/provider-delta.test.d.ts +1 -0
- package/dist/integrations/providers/provider-modes-coverage.test.d.ts +1 -0
- package/dist/integrations/providers/providers.test.d.ts +1 -0
- package/dist/integrations/providers/qdrant.d.ts +3 -0
- package/dist/integrations/providers/qdrant.js +2 -0
- package/dist/integrations/providers/registry.d.ts +24 -0
- package/dist/integrations/providers/registry.js +2 -0
- package/dist/integrations/providers/reworkd.d.ts +3 -0
- package/dist/integrations/providers/reworkd.js +2 -0
- package/dist/integrations/providers/serper.d.ts +3 -0
- package/dist/integrations/providers/serper.js +2 -0
- package/dist/integrations/providers/sillage.d.ts +4 -0
- package/dist/integrations/providers/sillage.js +2 -0
- package/dist/integrations/providers/slng.d.ts +3 -0
- package/dist/integrations/providers/slng.js +2 -0
- package/dist/integrations/providers/sms.d.ts +31 -0
- package/dist/integrations/providers/sms.js +1 -0
- package/dist/integrations/providers/social.d.ts +8 -0
- package/dist/integrations/providers/social.js +2 -0
- package/dist/integrations/providers/storage.d.ts +65 -0
- package/dist/integrations/providers/storage.js +1 -0
- package/dist/integrations/providers/strava.d.ts +3 -0
- package/dist/integrations/providers/strava.js +2 -0
- package/dist/integrations/providers/stripe.d.ts +3 -0
- package/dist/integrations/providers/stripe.js +2 -0
- package/dist/integrations/providers/supabase-postgres.d.ts +3 -0
- package/dist/integrations/providers/supabase-postgres.js +2 -0
- package/dist/integrations/providers/supabase-vector.d.ts +3 -0
- package/dist/integrations/providers/supabase-vector.js +2 -0
- package/dist/integrations/providers/tavily.d.ts +8 -0
- package/dist/integrations/providers/tavily.js +2 -0
- package/dist/integrations/providers/tldv.d.ts +3 -0
- package/dist/integrations/providers/tldv.js +2 -0
- package/dist/integrations/providers/twilio-sms.d.ts +3 -0
- package/dist/integrations/providers/twilio-sms.js +2 -0
- package/dist/integrations/providers/vector-store.d.ts +39 -0
- package/dist/integrations/providers/vector-store.js +1 -0
- package/dist/integrations/providers/video.d.ts +181 -0
- package/dist/integrations/providers/video.js +2 -0
- package/dist/integrations/providers/voice-video-sync.d.ts +29 -0
- package/dist/integrations/providers/voice-video-sync.js +1 -0
- package/dist/integrations/providers/voice.d.ts +180 -0
- package/dist/integrations/providers/voice.js +1 -0
- package/dist/integrations/providers/web-access-shared.d.ts +18 -0
- package/dist/integrations/providers/web-access-shared.js +2 -0
- package/dist/integrations/providers/whoop.d.ts +3 -0
- package/dist/integrations/providers/whoop.js +2 -0
- package/dist/integrations/runtime-transport.test.d.ts +1 -0
- package/dist/integrations/runtime.d.ts +140 -0
- package/dist/integrations/runtime.js +2 -0
- package/dist/integrations/runtime.test.d.ts +1 -0
- package/dist/integrations/sales-intelligence/events.d.ts +182 -0
- package/dist/integrations/sales-intelligence/events.js +2 -0
- package/dist/integrations/sales-intelligence/events.test.d.ts +1 -0
- package/dist/integrations/sales-intelligence/fullenrich-cancel-operation.d.ts +39 -0
- package/dist/integrations/sales-intelligence/fullenrich-cancel-operation.js +2 -0
- package/dist/integrations/sales-intelligence/index.d.ts +7 -0
- package/dist/integrations/sales-intelligence/index.js +2 -0
- package/dist/integrations/sales-intelligence/operation-helpers.d.ts +4 -0
- package/dist/integrations/sales-intelligence/operation-helpers.js +2 -0
- package/dist/integrations/sales-intelligence/operations.d.ts +873 -0
- package/dist/integrations/sales-intelligence/operations.js +2 -0
- package/dist/integrations/sales-intelligence/operations.test.d.ts +1 -0
- package/dist/integrations/sales-intelligence/schemas-events.d.ts +78 -0
- package/dist/integrations/sales-intelligence/schemas-events.js +2 -0
- package/dist/integrations/sales-intelligence/schemas-results.d.ts +69 -0
- package/dist/integrations/sales-intelligence/schemas-results.js +2 -0
- package/dist/integrations/sales-intelligence/schemas.d.ts +73 -0
- package/dist/integrations/sales-intelligence/schemas.js +2 -0
- package/dist/integrations/secrets/aws-secret-manager.d.ts +28 -0
- package/dist/integrations/secrets/aws-secret-manager.js +2 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts +28 -0
- package/dist/integrations/secrets/env-secret-provider.js +2 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +29 -0
- package/dist/integrations/secrets/gcp-secret-manager.js +2 -0
- package/dist/integrations/secrets/index.d.ts +6 -0
- package/dist/integrations/secrets/index.js +2 -0
- package/dist/integrations/secrets/manager.d.ts +44 -0
- package/dist/integrations/secrets/manager.js +2 -0
- package/dist/integrations/secrets/provider.d.ts +49 -0
- package/dist/integrations/secrets/provider.js +2 -0
- package/dist/integrations/secrets/provider.test.d.ts +1 -0
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts +35 -0
- package/dist/integrations/secrets/scaleway-secret-manager.js +2 -0
- package/dist/integrations/secrets-types.d.ts +14 -0
- package/dist/integrations/secrets-types.js +1 -0
- package/dist/integrations/social/index.d.ts +7 -0
- package/dist/integrations/social/index.js +2 -0
- package/dist/integrations/social/instagram.d.ts +86 -0
- package/dist/integrations/social/instagram.js +1 -0
- package/dist/integrations/social/models.d.ts +107 -0
- package/dist/integrations/social/models.js +1 -0
- package/dist/integrations/social/provider.d.ts +46 -0
- package/dist/integrations/social/provider.js +2 -0
- package/dist/integrations/social/social.test.d.ts +1 -0
- package/dist/integrations/social/tracking-models.d.ts +153 -0
- package/dist/integrations/social/tracking-models.js +2 -0
- package/dist/integrations/social/tracking-provider.d.ts +53 -0
- package/dist/integrations/social/tracking-provider.js +1 -0
- package/dist/integrations/social/tracking-store.d.ts +78 -0
- package/dist/integrations/social/tracking-store.js +1 -0
- package/dist/integrations/social/x-publication.d.ts +143 -0
- package/dist/integrations/social/x-publication.js +2 -0
- package/dist/integrations/social/x-upload-state.d.ts +53 -0
- package/dist/integrations/social/x-upload-state.js +2 -0
- package/dist/integrations/social/x-upload.d.ts +111 -0
- package/dist/integrations/social/x-upload.js +2 -0
- package/dist/integrations/social/x-withdrawal.d.ts +13 -0
- package/dist/integrations/social/x-withdrawal.js +2 -0
- package/dist/integrations/social/x.d.ts +84 -0
- package/dist/integrations/social/x.js +1 -0
- package/dist/integrations/spec.d.ts +119 -0
- package/dist/integrations/spec.js +2 -0
- package/dist/integrations/spec.test.d.ts +1 -0
- package/dist/integrations/transport.d.ts +115 -0
- package/dist/integrations/transport.js +2 -0
- package/dist/integrations/transport.test.d.ts +1 -0
- package/dist/integrations/versioning.d.ts +51 -0
- package/dist/integrations/versioning.js +2 -0
- package/dist/integrations/versioning.test.d.ts +1 -0
- package/dist/integrations/web-access/browser-automation.d.ts +134 -0
- package/dist/integrations/web-access/browser-automation.js +2 -0
- package/dist/integrations/web-access/capability-ledger.d.ts +50 -0
- package/dist/integrations/web-access/capability-ledger.js +2 -0
- package/dist/integrations/web-access/capability-ledger.test.d.ts +1 -0
- package/dist/integrations/web-access/events.d.ts +105 -0
- package/dist/integrations/web-access/events.js +2 -0
- package/dist/integrations/web-access/index.d.ts +16 -0
- package/dist/integrations/web-access/index.js +22 -0
- package/dist/integrations/web-access/inventory-definitions-expanded.d.ts +2 -0
- package/dist/integrations/web-access/inventory-definitions-expanded.js +2 -0
- package/dist/integrations/web-access/inventory-definitions.d.ts +17 -0
- package/dist/integrations/web-access/inventory-definitions.js +2 -0
- package/dist/integrations/web-access/inventory-evidence.d.ts +24 -0
- package/dist/integrations/web-access/inventory-evidence.js +2 -0
- package/dist/integrations/web-access/inventory-mappings-browserbase.d.ts +2 -0
- package/dist/integrations/web-access/inventory-mappings-browserbase.js +2 -0
- package/dist/integrations/web-access/inventory-mappings.d.ts +54 -0
- package/dist/integrations/web-access/inventory-mappings.js +2 -0
- package/dist/integrations/web-access/inventory.d.ts +4 -0
- package/dist/integrations/web-access/inventory.js +2 -0
- package/dist/integrations/web-access/models.d.ts +145 -0
- package/dist/integrations/web-access/models.js +2 -0
- package/dist/integrations/web-access/operation-definitions.d.ts +19 -0
- package/dist/integrations/web-access/operation-definitions.js +2 -0
- package/dist/integrations/web-access/operation-errors.d.ts +56 -0
- package/dist/integrations/web-access/operation-errors.js +2 -0
- package/dist/integrations/web-access/operation-output-models.d.ts +177 -0
- package/dist/integrations/web-access/operation-output-models.js +2 -0
- package/dist/integrations/web-access/operation-schema-models.d.ts +453 -0
- package/dist/integrations/web-access/operation-schema-models.js +2 -0
- package/dist/integrations/web-access/operation-schemas.d.ts +165 -0
- package/dist/integrations/web-access/operation-schemas.js +2 -0
- package/dist/integrations/web-access/operations.d.ts +22 -0
- package/dist/integrations/web-access/operations.js +22 -0
- package/dist/integrations/web-access/operations.test.d.ts +1 -0
- package/dist/integrations/web-access/providers.d.ts +56 -0
- package/dist/integrations/web-access/providers.js +1 -0
- package/dist/integrations/web-access/providers.test.d.ts +1 -0
- package/dist/integrations/web-access/schemas.d.ts +118 -0
- package/dist/integrations/web-access/schemas.js +2 -0
- package/dist/node/contracts-integrations.feature.js +1 -0
- package/dist/node/index.js +21 -0
- package/dist/node/integrations/advertising/index.js +1 -0
- package/dist/node/integrations/advertising/recipe-schema.js +1 -0
- package/dist/node/integrations/advertising/recipe.js +0 -0
- package/dist/node/integrations/advertising/specs.js +1 -0
- package/dist/node/integrations/advertising/types.js +1 -0
- package/dist/node/integrations/attio/events.js +1 -0
- package/dist/node/integrations/attio/index.js +1 -0
- package/dist/node/integrations/attio/operations.js +1 -0
- package/dist/node/integrations/auth-helpers.js +1 -0
- package/dist/node/integrations/auth.js +1 -0
- package/dist/node/integrations/binding.js +0 -0
- package/dist/node/integrations/byok.js +1 -0
- package/dist/node/integrations/catalog.js +1 -0
- package/dist/node/integrations/clay/events.js +1 -0
- package/dist/node/integrations/clay/index.js +1 -0
- package/dist/node/integrations/clay/operations.js +1 -0
- package/dist/node/integrations/connection.js +0 -0
- package/dist/node/integrations/credentials.js +1 -0
- package/dist/node/integrations/deployment-topology-model.js +1 -0
- package/dist/node/integrations/deployment-topology-receipt.js +1 -0
- package/dist/node/integrations/deployment-topology-validation.js +1 -0
- package/dist/node/integrations/deployment-topology.js +1 -0
- package/dist/node/integrations/docs/integrations.docblock.js +100 -0
- package/dist/node/integrations/email-operations.js +1 -0
- package/dist/node/integrations/gtm/capability-ledger.fixture-helpers.js +1 -0
- package/dist/node/integrations/gtm/capability-ledger.fixtures.js +1 -0
- package/dist/node/integrations/gtm/capability-ledger.js +1 -0
- package/dist/node/integrations/gtm/hosted-mcp.js +1 -0
- package/dist/node/integrations/gtm/index.js +1 -0
- package/dist/node/integrations/gtm/inventory/attio.js +1 -0
- package/dist/node/integrations/gtm/inventory/clay.js +1 -0
- package/dist/node/integrations/gtm/inventory/fullenrich.js +1 -0
- package/dist/node/integrations/gtm/inventory/index.js +1 -0
- package/dist/node/integrations/gtm/inventory/types.js +0 -0
- package/dist/node/integrations/gtm/preflight.js +1 -0
- package/dist/node/integrations/gtm/schemas.js +1 -0
- package/dist/node/integrations/gtm/webhook-ingress.js +1 -0
- package/dist/node/integrations/health/contracts/activities.js +1 -0
- package/dist/node/integrations/health/contracts/biometrics.js +1 -0
- package/dist/node/integrations/health/contracts/index.js +1 -0
- package/dist/node/integrations/health/contracts/nutrition.js +1 -0
- package/dist/node/integrations/health/contracts/sleep.js +1 -0
- package/dist/node/integrations/health/contracts/webhooks.js +1 -0
- package/dist/node/integrations/health/contracts/workouts.js +1 -0
- package/dist/node/integrations/health/guards.js +1 -0
- package/dist/node/integrations/health/health.capability.js +1 -0
- package/dist/node/integrations/health/health.feature.js +1 -0
- package/dist/node/integrations/health/models.js +1 -0
- package/dist/node/integrations/health/telemetry.js +1 -0
- package/dist/node/integrations/health.js +1 -0
- package/dist/node/integrations/index.js +21 -0
- package/dist/node/integrations/integrations.capability.js +1 -0
- package/dist/node/integrations/integrations.feature.js +1 -0
- package/dist/node/integrations/linkedin/advertising.js +0 -0
- package/dist/node/integrations/linkedin/analytics.js +0 -0
- package/dist/node/integrations/linkedin/capabilities.js +1 -0
- package/dist/node/integrations/linkedin/community.js +0 -0
- package/dist/node/integrations/linkedin/credentials.js +1 -0
- package/dist/node/integrations/linkedin/host.js +1 -0
- package/dist/node/integrations/linkedin/identity.js +0 -0
- package/dist/node/integrations/linkedin/index.js +1 -0
- package/dist/node/integrations/linkedin/installation.js +1 -0
- package/dist/node/integrations/linkedin/media-job-state.js +1 -0
- package/dist/node/integrations/linkedin/media-job.js +1 -0
- package/dist/node/integrations/linkedin/media-session.js +1 -0
- package/dist/node/integrations/linkedin/media.js +1 -0
- package/dist/node/integrations/linkedin/messaging.js +0 -0
- package/dist/node/integrations/linkedin/models.js +0 -0
- package/dist/node/integrations/linkedin/native-publication.js +1 -0
- package/dist/node/integrations/linkedin/native-withdrawal.js +1 -0
- package/dist/node/integrations/linkedin/operation-catalog.js +1 -0
- package/dist/node/integrations/linkedin/operations.js +1 -0
- package/dist/node/integrations/linkedin/provider.js +1 -0
- package/dist/node/integrations/linkedin/sales.js +0 -0
- package/dist/node/integrations/linkedin/sync.js +0 -0
- package/dist/node/integrations/linkedin/webhooks.js +0 -0
- package/dist/node/integrations/meeting-recorder/contracts/index.js +1 -0
- package/dist/node/integrations/meeting-recorder/contracts/meetings.js +1 -0
- package/dist/node/integrations/meeting-recorder/contracts/transcripts.js +1 -0
- package/dist/node/integrations/meeting-recorder/contracts/webhooks.js +1 -0
- package/dist/node/integrations/meeting-recorder/meeting-recorder.capability.js +1 -0
- package/dist/node/integrations/meeting-recorder/meeting-recorder.feature.js +1 -0
- package/dist/node/integrations/meeting-recorder/models.js +1 -0
- package/dist/node/integrations/meeting-recorder/telemetry.js +1 -0
- package/dist/node/integrations/openbanking/contracts/accounts.js +1 -0
- package/dist/node/integrations/openbanking/contracts/balances.js +1 -0
- package/dist/node/integrations/openbanking/contracts/index.js +1 -0
- package/dist/node/integrations/openbanking/contracts/transactions.js +1 -0
- package/dist/node/integrations/openbanking/guards.js +1 -0
- package/dist/node/integrations/openbanking/models.js +1 -0
- package/dist/node/integrations/openbanking/openbanking.capability.js +1 -0
- package/dist/node/integrations/openbanking/openbanking.feature.js +1 -0
- package/dist/node/integrations/openbanking/telemetry.js +1 -0
- package/dist/node/integrations/operations.js +21 -0
- package/dist/node/integrations/providers/analytics-reader.js +0 -0
- package/dist/node/integrations/providers/analytics-writer.js +0 -0
- package/dist/node/integrations/providers/analytics.js +0 -0
- package/dist/node/integrations/providers/apify.js +1 -0
- package/dist/node/integrations/providers/apple-health.js +1 -0
- package/dist/node/integrations/providers/async-media-record.js +1 -0
- package/dist/node/integrations/providers/async-media.js +0 -0
- package/dist/node/integrations/providers/attio.js +1 -0
- package/dist/node/integrations/providers/bright-data.js +1 -0
- package/dist/node/integrations/providers/browserbase.js +1 -0
- package/dist/node/integrations/providers/calendar.d.js +0 -0
- package/dist/node/integrations/providers/calendar.js +0 -0
- package/dist/node/integrations/providers/catalog.js +1 -0
- package/dist/node/integrations/providers/clay.js +1 -0
- package/dist/node/integrations/providers/communication-channel.js +1 -0
- package/dist/node/integrations/providers/composio.js +1 -0
- package/dist/node/integrations/providers/crm-fixture-core.js +1 -0
- package/dist/node/integrations/providers/crm-hubspot-fixture.js +1 -0
- package/dist/node/integrations/providers/crm-salesforce-fixture.js +1 -0
- package/dist/node/integrations/providers/crm-write-proposal-types.js +1 -0
- package/dist/node/integrations/providers/crm-write-proposal.js +1 -0
- package/dist/node/integrations/providers/crm.js +1 -0
- package/dist/node/integrations/providers/database.js +0 -0
- package/dist/node/integrations/providers/deepgram.js +1 -0
- package/dist/node/integrations/providers/direct-fetch.js +1 -0
- package/dist/node/integrations/providers/eightsleep.js +1 -0
- package/dist/node/integrations/providers/elevenlabs.js +1 -0
- package/dist/node/integrations/providers/email-delivery-events.js +0 -0
- package/dist/node/integrations/providers/email.js +0 -0
- package/dist/node/integrations/providers/embedding.js +0 -0
- package/dist/node/integrations/providers/fal-image.js +1 -0
- package/dist/node/integrations/providers/fal.js +1 -0
- package/dist/node/integrations/providers/fathom.js +1 -0
- package/dist/node/integrations/providers/firecrawl.js +1 -0
- package/dist/node/integrations/providers/fireflies.js +1 -0
- package/dist/node/integrations/providers/fitbit.js +1 -0
- package/dist/node/integrations/providers/fullenrich.js +1 -0
- package/dist/node/integrations/providers/garmin.js +1 -0
- package/dist/node/integrations/providers/gcs-storage.js +1 -0
- package/dist/node/integrations/providers/gmail.js +1 -0
- package/dist/node/integrations/providers/google-calendar.js +1 -0
- package/dist/node/integrations/providers/google-drive.js +1 -0
- package/dist/node/integrations/providers/gradium.js +1 -0
- package/dist/node/integrations/providers/granola.js +1 -0
- package/dist/node/integrations/providers/health-provider-shared.js +1 -0
- package/dist/node/integrations/providers/health.js +0 -0
- package/dist/node/integrations/providers/higgsfield.js +1 -0
- package/dist/node/integrations/providers/image.js +1 -0
- package/dist/node/integrations/providers/index.js +1 -0
- package/dist/node/integrations/providers/jira.js +1 -0
- package/dist/node/integrations/providers/linear.js +1 -0
- package/dist/node/integrations/providers/linkedin-community.js +1 -0
- package/dist/node/integrations/providers/linkedin-marketing.js +1 -0
- package/dist/node/integrations/providers/linkedin-member.js +1 -0
- package/dist/node/integrations/providers/linkedin-messaging.js +1 -0
- package/dist/node/integrations/providers/linkedin-sales-navigator.js +1 -0
- package/dist/node/integrations/providers/linkedin-spec-shared.js +1 -0
- package/dist/node/integrations/providers/linkup.js +1 -0
- package/dist/node/integrations/providers/llm.js +0 -0
- package/dist/node/integrations/providers/massive.js +1 -0
- package/dist/node/integrations/providers/meeting-capture.js +0 -0
- package/dist/node/integrations/providers/meeting-recorder.js +0 -0
- package/dist/node/integrations/providers/messaging-github.js +1 -0
- package/dist/node/integrations/providers/messaging-matrix.js +1 -0
- package/dist/node/integrations/providers/messaging-slack.js +1 -0
- package/dist/node/integrations/providers/messaging-teams.js +1 -0
- package/dist/node/integrations/providers/messaging-telegram.js +1 -0
- package/dist/node/integrations/providers/messaging-whatsapp-meta.js +1 -0
- package/dist/node/integrations/providers/messaging-whatsapp-twilio.js +1 -0
- package/dist/node/integrations/providers/messaging.js +0 -0
- package/dist/node/integrations/providers/mistral-conversational.js +1 -0
- package/dist/node/integrations/providers/mistral-stt.js +1 -0
- package/dist/node/integrations/providers/mistral.js +1 -0
- package/dist/node/integrations/providers/mode-exemptions.js +1 -0
- package/dist/node/integrations/providers/myfitnesspal.js +1 -0
- package/dist/node/integrations/providers/notion.js +1 -0
- package/dist/node/integrations/providers/openai-image.js +1 -0
- package/dist/node/integrations/providers/openai-realtime.js +1 -0
- package/dist/node/integrations/providers/openbanking.js +0 -0
- package/dist/node/integrations/providers/openwearables.js +1 -0
- package/dist/node/integrations/providers/oura.js +1 -0
- package/dist/node/integrations/providers/oxylabs.js +1 -0
- package/dist/node/integrations/providers/payments/capabilities-billing.js +0 -0
- package/dist/node/integrations/providers/payments/capabilities-payments.js +0 -0
- package/dist/node/integrations/providers/payments/capabilities.js +0 -0
- package/dist/node/integrations/providers/payments/context.js +1 -0
- package/dist/node/integrations/providers/payments/provider.js +0 -0
- package/dist/node/integrations/providers/payments/resources.js +0 -0
- package/dist/node/integrations/providers/payments/shared.js +1 -0
- package/dist/node/integrations/providers/payments.js +1 -0
- package/dist/node/integrations/providers/paypal.js +1 -0
- package/dist/node/integrations/providers/peloton.js +1 -0
- package/dist/node/integrations/providers/posthog-llm-telemetry.js +1 -0
- package/dist/node/integrations/providers/posthog.js +1 -0
- package/dist/node/integrations/providers/postmark.js +1 -0
- package/dist/node/integrations/providers/powens.js +1 -0
- package/dist/node/integrations/providers/project-management.js +1 -0
- package/dist/node/integrations/providers/provider-delta.js +1 -0
- package/dist/node/integrations/providers/qdrant.js +1 -0
- package/dist/node/integrations/providers/registry.js +1 -0
- package/dist/node/integrations/providers/reworkd.js +1 -0
- package/dist/node/integrations/providers/serper.js +1 -0
- package/dist/node/integrations/providers/sillage.js +1 -0
- package/dist/node/integrations/providers/slng.js +1 -0
- package/dist/node/integrations/providers/sms.js +0 -0
- package/dist/node/integrations/providers/social.js +1 -0
- package/dist/node/integrations/providers/storage.js +0 -0
- package/dist/node/integrations/providers/strava.js +1 -0
- package/dist/node/integrations/providers/stripe.js +1 -0
- package/dist/node/integrations/providers/supabase-postgres.js +1 -0
- package/dist/node/integrations/providers/supabase-vector.js +1 -0
- package/dist/node/integrations/providers/tavily.js +1 -0
- package/dist/node/integrations/providers/tldv.js +1 -0
- package/dist/node/integrations/providers/twilio-sms.js +1 -0
- package/dist/node/integrations/providers/vector-store.js +0 -0
- package/dist/node/integrations/providers/video.js +1 -0
- package/dist/node/integrations/providers/voice-video-sync.js +0 -0
- package/dist/node/integrations/providers/voice.js +0 -0
- package/dist/node/integrations/providers/web-access-shared.js +1 -0
- package/dist/node/integrations/providers/whoop.js +1 -0
- package/dist/node/integrations/runtime.js +1 -0
- package/dist/node/integrations/sales-intelligence/events.js +1 -0
- package/dist/node/integrations/sales-intelligence/fullenrich-cancel-operation.js +1 -0
- package/dist/node/integrations/sales-intelligence/index.js +1 -0
- package/dist/node/integrations/sales-intelligence/operation-helpers.js +1 -0
- package/dist/node/integrations/sales-intelligence/operations.js +1 -0
- package/dist/node/integrations/sales-intelligence/schemas-events.js +1 -0
- package/dist/node/integrations/sales-intelligence/schemas-results.js +1 -0
- package/dist/node/integrations/sales-intelligence/schemas.js +1 -0
- package/dist/node/integrations/secrets/aws-secret-manager.js +1 -0
- package/dist/node/integrations/secrets/env-secret-provider.js +1 -0
- package/dist/node/integrations/secrets/gcp-secret-manager.js +1 -0
- package/dist/node/integrations/secrets/index.js +1 -0
- package/dist/node/integrations/secrets/manager.js +1 -0
- package/dist/node/integrations/secrets/provider.js +1 -0
- package/dist/node/integrations/secrets/scaleway-secret-manager.js +1 -0
- package/dist/node/integrations/secrets-types.js +0 -0
- package/dist/node/integrations/social/index.js +1 -0
- package/dist/node/integrations/social/instagram.js +0 -0
- package/dist/node/integrations/social/models.js +0 -0
- package/dist/node/integrations/social/provider.js +1 -0
- package/dist/node/integrations/social/tracking-models.js +1 -0
- package/dist/node/integrations/social/tracking-provider.js +0 -0
- package/dist/node/integrations/social/tracking-store.js +0 -0
- package/dist/node/integrations/social/x-publication.js +1 -0
- package/dist/node/integrations/social/x-upload-state.js +1 -0
- package/dist/node/integrations/social/x-upload.js +1 -0
- package/dist/node/integrations/social/x-withdrawal.js +1 -0
- package/dist/node/integrations/social/x.js +0 -0
- package/dist/node/integrations/spec.js +1 -0
- package/dist/node/integrations/transport.js +1 -0
- package/dist/node/integrations/versioning.js +1 -0
- package/dist/node/integrations/web-access/browser-automation.js +1 -0
- package/dist/node/integrations/web-access/capability-ledger.js +1 -0
- package/dist/node/integrations/web-access/events.js +1 -0
- package/dist/node/integrations/web-access/index.js +21 -0
- package/dist/node/integrations/web-access/inventory-definitions-expanded.js +1 -0
- package/dist/node/integrations/web-access/inventory-definitions.js +1 -0
- package/dist/node/integrations/web-access/inventory-evidence.js +1 -0
- package/dist/node/integrations/web-access/inventory-mappings-browserbase.js +1 -0
- package/dist/node/integrations/web-access/inventory-mappings.js +1 -0
- package/dist/node/integrations/web-access/inventory.js +1 -0
- package/dist/node/integrations/web-access/models.js +1 -0
- package/dist/node/integrations/web-access/operation-definitions.js +1 -0
- package/dist/node/integrations/web-access/operation-errors.js +1 -0
- package/dist/node/integrations/web-access/operation-output-models.js +1 -0
- package/dist/node/integrations/web-access/operation-schema-models.js +1 -0
- package/dist/node/integrations/web-access/operation-schemas.js +1 -0
- package/dist/node/integrations/web-access/operations.js +21 -0
- package/dist/node/integrations/web-access/providers.js +0 -0
- package/dist/node/integrations/web-access/schemas.js +1 -0
- package/package.json +3606 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
function a({unsupportedModeReason:e,configFields:r,secretFields:o,rotationSupported:m=!1,setupSteps:y}){let p={mode:"byok",validationStrategy:"byok-lifecycle",rotation:{supported:m}};if(r)p.configFields=r;if(o)p.secretFields=o;if(y)p.setupSteps=y;return{modes:{byok:p},exempt:!0,exemptionReason:e}}import{SpecContractRegistry as Xe}from"@lssm/lib.contracts-spec/registry";var Ze=(e)=>`${e.key}.v${e.version}`;class w extends Xe{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((r)=>r.meta.category===e)}}function Oo(e){return Ze(e)}var t=(e)=>e;var k=[{key:"advertising.meta",title:"Meta Marketing API",url:"https://graph.facebook.com",docs:"https://developers.facebook.com/docs/marketing-api"},{key:"advertising.google",title:"Google Ads API",url:"https://googleads.googleapis.com",docs:"https://developers.google.com/google-ads/api/rest/examples"},{key:"advertising.tiktok",title:"TikTok Business API",url:"https://business-api.tiktok.com",docs:"https://business-api.tiktok.com/portal/docs"}].map((e)=>t({meta:{key:e.key,version:"1.0.0",title:e.title,description:"Scoped provider-native advertising mutations, reports and conversion delivery with exact authorization.",category:"analytics",domain:"marketing",owners:["@platform/marketing"],tags:["ads","marketing","conversions"],stability:"experimental"},supportedModes:["byok"],transports:[{type:"rest",baseUrl:e.url}],preferredTransport:"rest",supportedAuthMethods:e.key==="advertising.tiktok"?[{type:"header",headerName:"Access-Token"}]:[{type:"bearer",tokenField:"accessToken"}],credentialManifest:a({unsupportedModeReason:"Managed ad-account provisioning has not been qualified; ad accounts, API access, review and spend mandates are tenant-owned.",secretFields:[{key:"accessToken",required:!0},...e.key==="advertising.google"?[{key:"developerToken",required:!0}]:[]],rotationSupported:!1}),capabilities:{provides:[{key:"advertising.campaign.manage",version:"1.0.0"},{key:"advertising.reporting.read",version:"1.0.0"},{key:"advertising.conversion.upload",version:"1.0.0"},...e.key==="advertising.google"?[{key:"advertising.conversion.adjust",version:"1.0.0"}]:[]]},configSchema:{schema:{type:"object",properties:{accountId:{type:"string"},apiVersion:{type:"string"}},required:["accountId","apiVersion"]},example:{accountId:"123456789",apiVersion:e.key==="advertising.tiktok"?"v1.3":e.key==="advertising.google"?"v25":"v25.0"}},secretSchema:{schema:{type:"object",properties:{accessToken:{type:"string"},...e.key==="advertising.google"?{developerToken:{type:"string"}}:{}},required:["accessToken",...e.key==="advertising.google"?["developerToken"]:[]]},example:{accessToken:"example-token",...e.key==="advertising.google"?{developerToken:"example-developer-token"}:{}}},healthCheck:{method:"custom",timeoutMs:1e4},docsUrl:e.docs})),Do=k[0],Fo=k[1],Ko=k[2];function M(e){for(let r of k)e.register(r);return e}function Lo(e,r){return e.find((o)=>o.type===r)}function T(e,r){return e.some((o)=>o.type===r)}function Ho(e,r){return e.find((o)=>o.type===r)}function P(e,r){return e.some((o)=>o.type===r)}import{StabilityEnum as et}from"@lssm/lib.contracts-spec/ownership";function s(e){return t({meta:{key:e.key,version:e.version??"1.0.0",category:"custom",title:e.title,description:e.description,domain:"knowledge",owners:["platform.ai"],tags:["web-access",...e.tags],stability:et.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed credentials are not shipped; tenants must supply provider-owned credentials through a SecretProvider.",secretFields:e.secretFields.map((r)=>({key:r})),rotationSupported:!1}),transports:e.transports,preferredTransport:e.preferredTransport,supportedAuthMethods:e.auth,capabilities:{provides:e.capabilities.map((r)=>({key:r,version:"1.0.0"}))},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},policyMode:{type:"string",enum:["governed","provider-pass-through","public-only"]},...e.configProperties}}},secretSchema:{schema:{type:"object",properties:Object.fromEntries(e.secretFields.map((r)=>[r,{type:"string"}]))},example:Object.fromEntries(e.secretFields.map((r)=>[r,"***"]))},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:e.docsUrl,byokSetup:{setupInstructions:"Resolve provider credentials at execution time through SecretProvider; never persist credentials in integration config.",keyRotationSupported:!1,quotaTrackingSupported:!0}})}var tt=s({key:"web-access.apify",title:"Apify Web Access",description:"Apify REST Actor runs, run status, cancellation, and datasets.",tags:["actors","scraping","datasets"],transports:[{type:"rest",baseUrl:"https://api.apify.com/v2"}],preferredTransport:"rest",auth:[{type:"bearer",tokenField:"apiToken"}],secretFields:["apiToken"],capabilities:["web.scrape","web.job","web.dataset.read"],docsUrl:"https://docs.apify.com/api/v2"});function R(e){return e.register(tt)}import{StabilityEnum as rt}from"@lssm/lib.contracts-spec/ownership";var x=["official-api","official-mcp","aggregator-api","aggregator-mcp","unofficial"],ot=[{key:"health.activities.read",version:"1.0.0"},{key:"health.workouts.read",version:"1.0.0"},{key:"health.sleep.read",version:"1.0.0"},{key:"health.biometrics.read",version:"1.0.0"}],it=[{type:"rest"},{type:"mcp",transport:"http"},{type:"webhook",inbound:{signatureHeader:"x-webhook-signature",signingAlgorithm:"hmac-sha256"}}],C=[{type:"oauth2",grantType:"authorization_code",tokenUrl:"",scopes:[]},{type:"api-key"},{type:"bearer"},{type:"basic"}];function c(e){let r=e.supportedAuthMethods??at(e);return t({meta:{key:e.key,version:"1.0.0",category:"health",title:e.title,description:e.description,domain:"health",owners:["platform.integrations"],tags:["health","wearables",...e.tags],stability:e.stability??rt.Experimental},supportedModes:e.supportedModes??["managed","byok"],transports:e.transports??it,preferredTransport:"rest",supportedAuthMethods:r,capabilities:{provides:e.capabilities??[...ot]},configSchema:{schema:{type:"object",properties:{apiBaseUrl:{type:"string",description:"Optional API base URL override for provider-specific regional or partner endpoints."},mcpUrl:{type:"string",description:"Optional MCP endpoint URL for provider tool transport."},oauthTokenUrl:{type:"string",description:"Optional OAuth token endpoint override used for access-token refresh flows."},defaultTransport:{type:"string",enum:[...x],description:"Preferred transport strategy used before fallbacks are attempted."},strategyOrder:{type:"array",items:{type:"string",enum:[...x]},description:"Ordered transport fallback strategy. Defaults to official API -> official MCP -> aggregator API -> aggregator MCP -> unofficial."},allowUnofficial:{type:"boolean",description:"Must be true to allow unofficial/automation connectors as fallback."},unofficialAllowList:{type:"array",items:{type:"string"},description:"Optional allowlist of provider keys allowed to use unofficial connectors."}}},example:{defaultTransport:e.defaultTransport??"official-api",strategyOrder:[...x],allowUnofficial:!1,unofficialAllowList:[]}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string"},accessToken:{type:"string"},refreshToken:{type:"string"},tokenExpiresAt:{type:"string"},clientId:{type:"string"},clientSecret:{type:"string"},mcpAccessToken:{type:"string"},username:{type:"string"},password:{type:"string"}}},example:{apiKey:"provider-api-key",accessToken:"oauth-access-token",refreshToken:"oauth-refresh-token"}},healthCheck:{method:"list",timeoutMs:1e4},docsUrl:e.docsUrl,byokSetup:{setupInstructions:e.byokSetupInstructions??"Create provider credentials, set allowed scopes, and store credentials in secret provider.",requiredScopes:e.byokScopes,keyRotationSupported:!1,quotaTrackingSupported:!1}})}function at(e){if(e.oauthTokenUrl){let r=e.oauthTokenUrl;return C.map((o)=>{if(o.type==="oauth2")return{...o,tokenUrl:r,scopes:e.byokScopes??[]};return o})}return[...C]}var nt=c({key:"health.apple-health",title:"Apple Health Bridge",description:"Apple Health ingestion bridge for HealthKit-exported or aggregator-routed data.",docsUrl:"https://developer.apple.com/health-fitness/",tags:["apple","healthkit","bridge"],defaultTransport:"aggregator-api",byokSetupInstructions:"Use on-device HealthKit authorization and route data through approved bridge endpoints or aggregator connectors."});function U(e){return e.register(nt)}import{StabilityEnum as mt}from"@lssm/lib.contracts-spec/ownership";var st=["endpoint","webhook-event","oauth-scope","hosted-mcp-tool","hosted-mcp-category"],pt=["implemented","deferred","not-applicable"],ct=["public","plan-gated","account-gated","vendor-unsupported"],dt=["stable","beta","alpha","deprecated"],lt=["supported","unsupported","discovered-at-connect","not-applicable"],O=["api","localMcp","hostedMcp","inboundWebhook","outboundWebhook"];function h(e,r,o){if(!r.includes(String(e)))throw Error(`${o} must be one of ${r.join(", ")}`)}function E(e,r){if(typeof e!=="string"||e.trim().length===0)throw Error(`${r} must be a non-empty string`)}function gt(e,r){let o=`rows[${r}].evidence`;if(E(e.evidence?.sourceUrl,`${o}.sourceUrl`),new URL(e.evidence.sourceUrl).protocol!=="https:")throw Error(`${o}.sourceUrl must use HTTPS`);if(!/^[a-f0-9]{64}$/.test(e.evidence.sha256))throw Error(`${o}.sha256 must be a lowercase SHA-256 digest`);if(!/^\d{4}-\d{2}-\d{2}$/.test(e.evidence.retrievedAt))throw Error(`${o}.retrievedAt must be YYYY-MM-DD`)}function ti(e,r={}){let o=new Set,m=new Set,y=new Set;for(let[p,S]of e.entries()){if(!S||typeof S!=="object")throw Error(`rows[${p}] must be an object`);let n=S;if(E(n.upstreamCapabilityId,`rows[${p}].upstreamCapabilityId`),o.has(n.upstreamCapabilityId))throw Error(`duplicate upstream capability ${n.upstreamCapabilityId}`);o.add(n.upstreamCapabilityId),h(n.granularity,st,`rows[${p}].granularity`),h(n.implementationState,pt,`rows[${p}].implementationState`),h(n.availability,ct,`rows[${p}].availability`),h(n.stability,dt,`rows[${p}].stability`);for(let d of O){let f=n.surfaces?.[d];if(!f)throw Error(`rows[${p}].surfaces.${d} is required`);if(h(f.state,lt,`rows[${p}].surfaces.${d}.state`),["unsupported","not-applicable"].includes(f.state)&&!f.reason)throw Error(`rows[${p}].surfaces.${d}.reason is required`)}if(gt(n,p),!Array.isArray(n.testIds)||n.testIds.length===0)throw Error(`rows[${p}].testIds must not be empty`);if(n.availability==="vendor-unsupported"&&n.implementationState==="implemented")throw Error(`${n.upstreamCapabilityId} is vendor-unsupported`);let Je=O.map((d)=>n.surfaces[d].state);if(n.implementationState==="implemented"&&!Je.some((d)=>d==="supported"))throw Error(`${n.upstreamCapabilityId} has no supported surface`);if(n.surfaces.localMcp.state==="supported"&&n.contract.operationKeys.length===0)throw Error(`${n.upstreamCapabilityId} local MCP requires an operation`);if(n.surfaces.inboundWebhook.state==="supported"&&n.contract.eventKeys.length===0)throw Error(`${n.upstreamCapabilityId} inbound webhook requires an event`);if(r.release&&n.implementationState==="deferred"&&!n.waiverArtifact)throw Error(`${n.upstreamCapabilityId} is deferred without a waiver`);for(let d of n.contract.operationKeys){if(m.has(d))throw Error(`operation ${d} maps to multiple capability units`);m.add(d)}for(let d of n.contract.eventKeys){if(y.has(d))throw Error(`event ${d} maps to multiple capability units`);y.add(d)}}}function ri(e,r){if(e.sha256!==r)throw Error(`${e.provider} capability evidence drift requires evidence review`)}function b(e){return Object.freeze({...e})}function ai(e){let r=[],{row:o}=e,m=o.effects.some((p)=>["write","destructive","cost-bearing","external-side-effect"].includes(p));if(o.implementationState!=="implemented")r.push(`implementation:${o.implementationState}`);if(!e.connectionReady)r.push("connection:not-ready");if(o.availability==="plan-gated"&&!e.entitlements.includes(o.upstreamCapabilityId))r.push("entitlement:missing");if(o.availability==="account-gated")r.push("availability:discover-at-connect");if(o.availability==="vendor-unsupported")r.push("availability:vendor-unsupported");if(o.stability==="beta"&&!e.allowBeta)r.push("stability:beta-opt-in-required");if(o.stability==="alpha"&&!e.allowAlpha)r.push("stability:alpha-opt-in-required");let y=o.auth.scopes.filter((p)=>!e.grantedScopes.includes(p));if(y.length>0)r.push(`scopes:missing:${y.join(",")}`);if(o.surfaces[e.surface].state!=="supported")r.push(`surface:${o.surfaces[e.surface].state}`);if((e.surface==="inboundWebhook"||e.surface==="outboundWebhook")&&!e.webhookConfigured)r.push("webhook:not-configured");if(m&&!e.approvalAvailable)r.push("approval:required");return{ready:r.length===0,operationKeys:o.contract.operationKeys,eventKeys:o.contract.eventKeys,blockers:r,requiresApproval:m}}import{ScalarTypeEnum as v,SchemaModel as l}from"@lssm/lib.schema";var g=v.JSONObject(),i=v.NonEmptyString(),pi=new l({name:"GtmConnectionInput",fields:{connectionId:{type:i,isOptional:!1},correlationId:{type:i,isOptional:!0}}}),ci=new l({name:"GtmResourceInput",fields:{connectionId:{type:i,isOptional:!1},resourceId:{type:i,isOptional:!0},parentId:{type:i,isOptional:!0},cursor:{type:i,isOptional:!0},payload:{type:g,isOptional:!0},filters:{type:g,isOptional:!0},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),di=new l({name:"GtmCollectionInput",fields:{connectionId:{type:i,isOptional:!1},cursor:{type:i,isOptional:!0},filters:{type:g,isOptional:!0},correlationId:{type:i,isOptional:!0}}}),li=new l({name:"GtmResourceIdInput",fields:{connectionId:{type:i,isOptional:!1},resourceId:{type:i,isOptional:!1},correlationId:{type:i,isOptional:!0}}}),gi=new l({name:"GtmNestedResourceIdInput",fields:{connectionId:{type:i,isOptional:!1},parentId:{type:i,isOptional:!1},resourceId:{type:i,isOptional:!1},correlationId:{type:i,isOptional:!0}}}),mi=new l({name:"GtmCreateInput",fields:{connectionId:{type:i,isOptional:!1},payload:{type:g,isOptional:!1},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),ui=new l({name:"GtmNestedCreateInput",fields:{connectionId:{type:i,isOptional:!1},parentId:{type:i,isOptional:!1},payload:{type:g,isOptional:!1},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),yi=new l({name:"GtmUpdateInput",fields:{connectionId:{type:i,isOptional:!1},resourceId:{type:i,isOptional:!1},payload:{type:g,isOptional:!1},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),hi=new l({name:"GtmNestedUpdateInput",fields:{connectionId:{type:i,isOptional:!1},parentId:{type:i,isOptional:!1},resourceId:{type:i,isOptional:!1},payload:{type:g,isOptional:!1},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),fi=new l({name:"GtmAttributeChildInput",fields:{connectionId:{type:i,isOptional:!1},parentId:{type:i,isOptional:!1},resourceId:{type:i,isOptional:!1},childId:{type:i,isOptional:!0},payload:{type:g,isOptional:!0},correlationId:{type:i,isOptional:!0}}}),ki=new l({name:"GtmNestedQueryInput",fields:{connectionId:{type:i,isOptional:!1},parentId:{type:i,isOptional:!1},cursor:{type:i,isOptional:!0},filters:{type:g,isOptional:!0},correlationId:{type:i,isOptional:!0}}}),bi=new l({name:"GtmResourceOutput",fields:{data:{type:g,isOptional:!1},nextCursor:{type:i,isOptional:!0},requestId:{type:i,isOptional:!0}}}),vi=new l({name:"GtmWebhookInput",fields:{connectionId:{type:i,isOptional:!1},deliveryId:{type:i,isOptional:!0},headers:{type:g,isOptional:!1},payload:{type:g,isOptional:!1},correlationId:{type:i,isOptional:!0}}}),Ii=new l({name:"GtmWebhookReceiptOutput",fields:{accepted:{type:v.Boolean(),isOptional:!1},duplicate:{type:v.Boolean(),isOptional:!1},receiptId:{type:i,isOptional:!1},verificationStatus:{type:i,isOptional:!1}}}),Si=new l({name:"HostedMcpDescriptorOutput",fields:{descriptor:{type:g,isOptional:!1}}});async function xi(e){if(e.rawBody.byteLength>e.maxBytes)return await e.store.quarantine(e.deliveryId,"payload-too-large"),{accepted:!1,duplicate:!1};if(!e.verify(e.rawBody))return await e.store.quarantine(e.deliveryId,"verification-failed"),{accepted:!1,duplicate:!1};let r=await e.store.claim(e.deliveryId,e.leaseMs??30000);if(!r.claimed||!r.leaseId)return{accepted:!0,duplicate:r.duplicate??!0};try{let o=e.normalize(e.rawBody,e.deliveryId),m=await e.handoff.persist({provider:e.provider,deliveryId:e.deliveryId,events:o,receivedAt:(e.now??(()=>new Date))().toISOString()});return await e.store.complete(e.deliveryId,r.leaseId),{accepted:!0,duplicate:!1,handoffReceiptId:m}}catch(o){let m=o instanceof Error?o.name:"unknown";throw await e.store.release(e.deliveryId,r.leaseId,m),o}}var ut=b({ownership:"vendor-hosted",execution:"external-session",proxyability:"never",endpoint:"https://mcp.attio.com/mcp",discovery:"oauth-protected",accountDependentCatalog:!0,knownCategories:["crm-read","crm-write","tasks","notes","lists"],confirmationAuthority:"vendor-client",tokenHandling:"client-held"}),yt=t({meta:{key:"crm.attio",version:"1.0.0",category:"crm",title:"Attio CRM",description:"Attio objects, records, lists, tasks, notes, meetings, webhooks, OAuth, and hosted MCP.",domain:"crm",owners:["platform.integrations"],tags:["crm","attio","webhook","mcp","oauth"],stability:mt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Attio access is unsupported; credentials are tenant-owned through an access token or OAuth application.",secretFields:[{key:"accessToken"},{key:"oauthClientSecret"}],rotationSupported:!0,setupSteps:["Create an Attio integration or OAuth application.","Store access tokens and client secrets through an integration.runtime secret provider.","Run capability preflight before registering operations."]}),transports:[{type:"rest",baseUrl:"https://api.attio.com/v2"},{type:"webhook"},{type:"mcp",transport:"http",url:ut.endpoint}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer",tokenField:"accessToken"},{type:"oauth2",grantType:"authorization_code",tokenUrl:"https://app.attio.com/authorize/token",authorizationUrl:"https://app.attio.com/authorize",scopes:["record_permission:read","record_permission:read-write","object_configuration:read","object_configuration:read-write","list_configuration:read","list_configuration:read-write","user_management:read","webhook:read-write"],pkce:!0}],capabilities:{provides:[{key:"crm.objects",version:"1.0.0"},{key:"crm.records",version:"1.0.0"},{key:"crm.lists",version:"1.0.0"},{key:"crm.activities",version:"1.0.0"},{key:"provider.webhook.attio",version:"1.0.0"},{key:"provider.mcp.attio",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},webhookPath:{type:"string"}}},example:{baseUrl:"https://api.attio.com/v2",webhookPath:"/webhooks/attio"}},secretSchema:{schema:{type:"object",properties:{accessToken:{type:"string"},oauthClientSecret:{type:"string"},webhookSigningSecret:{type:"string"}}},example:{accessToken:"attio_***",oauthClientSecret:"***",webhookSigningSecret:"***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.attio.com/",byokSetup:{setupInstructions:"Use an access token for a single workspace or OAuth authorization code with least-privilege scopes for multi-workspace applications.",validationEndpoint:"https://api.attio.com/v2/self",keyRotationSupported:!0,quotaTrackingSupported:!0}});function q(e){return e.register(yt)}var ht=s({key:"web-access.bright-data",title:"Bright Data Web Access",description:"Bright Data search, scraping, datasets, browser automation, asynchronous delivery, MCP, and residential proxy access.",tags:["scraping","browser","residential-proxy","mcp"],transports:[{type:"sdk",packageName:"@brightdata/sdk",minVersion:"1.2.0",runtime:"node"},{type:"rest",baseUrl:"https://api.brightdata.com"},{type:"webhook",inbound:{verification:"network-allowlist",allowlistDocsUrl:"https://docs.brightdata.com/datasets/scrapers/chatgpt/data-delivery/webhooks",registrationSupported:!0}},{type:"websocket",url:"wss://brd.superproxy.io:9222",protocol:"cdp",discoveryOperationKey:"web-access.bright-data.browser.connection.describe"},{type:"mcp",transport:"http",url:"https://mcp.brightdata.com/mcp",toolPrefix:"bright_data"},{type:"mcp",transport:"stdio",command:"npx",args:["-y","@brightdata/mcp"],toolPrefix:"bright_data"},{type:"proxy",protocols:["http","https","socks5","socks5h"],host:"brd.superproxy.io",ports:{http:33335,https:33335,socks5:22228,socks5h:22228},remoteDns:!0,geoTargeting:!0,stickySessions:!0}],preferredTransport:"sdk",auth:[{type:"bearer",tokenField:"apiToken"},{type:"basic",usernameField:"proxyUsername",passwordField:"proxyPassword"}],secretFields:["apiToken","proxyUsername","proxyPassword","mcpToken"],capabilities:["web.search","web.fetch","web.extract","web.scrape","web.browser","web.proxy","provider.mcp.bright-data"],docsUrl:"https://docs.brightdata.com/introduction",configProperties:{zone:{type:"string"},country:{type:"string"}}});function j(e){return e.register(ht)}var ft=s({key:"web-access.browserbase",title:"Browserbase Web Access",description:"Browserbase Search, Fetch, browser sessions, contexts, CDP, managed residential proxy configuration, and MCP.",tags:["browser","cdp","search","mcp"],transports:[{type:"sdk",packageName:"@browserbasehq/sdk",minVersion:"2.16.0",runtime:"node"},{type:"rest",baseUrl:"https://api.browserbase.com/v1"},{type:"websocket",url:"wss://connect.browserbase.com",protocol:"cdp",discoveryOperationKey:"web-access.browserbase.connection.describe"},{type:"mcp",transport:"http",url:"https://mcp.browserbase.com/mcp",toolPrefix:"browserbase"},{type:"mcp",transport:"stdio",command:"npx",args:["-y","@browserbasehq/mcp"],toolPrefix:"browserbase"},{type:"proxy",protocols:["http","https"],geoTargeting:!0,stickySessions:!0}],preferredTransport:"sdk",auth:[{type:"header",headerName:"X-BB-API-Key"},{type:"x402",authority:"injected-payment-port"}],secretFields:["apiKey","mcpToken","customProxyUrl"],capabilities:["web.search","web.fetch","web.browser","web.proxy.session","provider.mcp.browserbase"],docsUrl:"https://docs.browserbase.com/reference/introduction",configProperties:{projectId:{type:"string"}}});function D(e){return e.register(ft)}import{StabilityEnum as kt}from"@lssm/lib.contracts-spec/ownership";var bt=b({ownership:"vendor-hosted",execution:"external-session",proxyability:"never",endpoint:"https://api.clay.com/v3/mcp",discovery:"oauth-protected",accountDependentCatalog:!0,knownCategories:["searches","routines","tables","workflows"],confirmationAuthority:"vendor-client",tokenHandling:"client-held"}),vt=t({meta:{key:"sales-intelligence.clay",version:"1.0.0",category:"custom",title:"Clay Developer Platform",description:"Clay Searches, Routines, runs, Enterprise read-only Tables, Workflows Alpha, webhooks, and hosted MCP.",domain:"sales-intelligence",owners:["platform.integrations"],tags:["sales-intelligence","clay","webhook","mcp","beta"],stability:kt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Clay access is unsupported; Public API credentials and hosted MCP sessions are tenant-owned.",secretFields:[{key:"apiKey"},{key:"callbackSharedToken"}],rotationSupported:!0,setupSteps:["Create a Clay API key for headless Public API access.","Store the key through an integration.runtime secret provider.","Opt into Alpha Workflows explicitly when the account supports them."]}),transports:[{type:"rest",baseUrl:"https://api.clay.com/v3"},{type:"webhook"},{type:"mcp",transport:"http",url:bt.endpoint}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer",tokenField:"apiKey"},{type:"oauth2",grantType:"authorization_code",tokenUrl:"https://api.clay.com/oauth/token",authorizationUrl:"https://app.clay.com/oauth/authorize",scopes:["openid","offline_access"],pkce:!0}],capabilities:{provides:[{key:"sales-intelligence.search",version:"1.0.0"},{key:"sales-intelligence.routines",version:"1.0.0"},{key:"sales-intelligence.tables.read",version:"1.0.0"},{key:"sales-intelligence.workflows.alpha",version:"1.0.0"},{key:"provider.webhook.clay",version:"1.0.0"},{key:"provider.mcp.clay",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},allowAlpha:{type:"boolean"},callbackTokenHeader:{type:"string"}}},example:{baseUrl:"https://api.clay.com/v3",allowAlpha:!1,callbackTokenHeader:"x-contractspec-clay-token"}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string"},callbackSharedToken:{type:"string"}}},example:{apiKey:"clay_***",callbackSharedToken:"***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://developers.clay.com/",constraints:{quotas:{tableWrites:0}},byokSetup:{setupInstructions:"Use API keys for the Public API. Hosted MCP OAuth remains client-held and is never proxied by ContractSpec.",validationEndpoint:"https://api.clay.com/v3/me",keyRotationSupported:!0,quotaTrackingSupported:!0}});function F(e){return e.register(vt)}import{StabilityEnum as It}from"@lssm/lib.contracts-spec/ownership";var St=t({meta:{key:"fallback.composio",version:"1.0.0",category:"custom",title:"Composio Universal Fallback",description:"Composio integration platform providing 850+ toolkits as a universal fallback for unsupported provider keys.",domain:"platform",owners:["platform.integrations"],tags:["composio","fallback","mcp","universal"],stability:It.Beta},supportedModes:["managed","byok"],transports:[{type:"mcp",transport:"http",toolPrefix:"composio"},{type:"sdk",packageName:"@composio/core",runtime:"universal"}],preferredTransport:"mcp",supportedAuthMethods:[{type:"api-key",headerName:"X-API-Key"}],capabilities:{provides:[{key:"integration.fallback",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string",description:"Custom Composio API base URL (for self-hosted or enterprise)."},preferredTransport:{type:"string",enum:["mcp","sdk"],description:"Preferred transport mode: mcp (default) or sdk (advanced)."},toolkits:{type:"array",items:{type:"string"},description:"Restrict available toolkits (empty = all)."}}},example:{preferredTransport:"mcp",toolkits:["github","slack","gmail"]}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Composio API key (COMPOSIO_API_KEY)."}}},example:{apiKey:"comp_***"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://docs.composio.dev",byokSetup:{setupInstructions:"Sign up at composio.dev, create an API key from the dashboard, and provide it as the apiKey secret.",requiredScopes:[],keyRotationSupported:!1,quotaTrackingSupported:!0,provisioningSteps:["Create a Composio account at https://composio.dev","Navigate to Settings > API Keys","Generate a new API key","Store the key as COMPOSIO_API_KEY"]}});function K(e){return e.register(St)}import{StabilityEnum as wt}from"@lssm/lib.contracts-spec/ownership";var xt=t({meta:{key:"ai-voice-stt.deepgram",version:"1.0.0",category:"ai-voice-stt",title:"Deepgram Speech-to-Text",description:"Deepgram integration for real-time and batch speech-to-text transcription with speaker diarization.",domain:"ai",owners:["platform.ai"],tags:["voice","stt","transcription","diarization"],stability:wt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Deepgram credentials are not declared because speech-to-text access depends on tenant-owned Deepgram API keys; ContractSpec does not provide a first-party Deepgram managed account.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!0}),transports:[{type:"rest",baseUrl:"https://api.deepgram.com"},{type:"sdk",packageName:"@deepgram/sdk"}],preferredTransport:"sdk",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Token "}],capabilities:{provides:[{key:"ai.voice.stt",version:"1.0.0"},{key:"ai.voice.conversational",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"Deepgram model to use (e.g. nova-3, nova-2, enhanced)."},language:{type:"string",description:"Default language code for transcription (e.g. en-US)."},enableDiarization:{type:"boolean",description:"Enable speaker diarization by default."},enableSmartFormat:{type:"boolean",description:"Enable smart formatting (punctuation, capitalization)."}}},example:{model:"nova-3",language:"en-US",enableDiarization:!0,enableSmartFormat:!0}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Deepgram API key with transcription permissions."}}},example:{apiKey:"dg_***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://developers.deepgram.com/docs",byokSetup:{setupInstructions:"Create a Deepgram API key with speech-to-text permissions and store it in your secret provider.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function G(e){return e.register(xt)}import{StabilityEnum as At}from"@lssm/lib.contracts-spec/ownership";var Mt=t({meta:{key:"web-access.direct-fetch",version:"1.0.0",category:"custom",title:"Direct Public Web Fetch",description:"Credential-free HTTP fetching with mandatory public-network and redirect validation.",domain:"knowledge",owners:["platform.ai"],tags:["web-access","fetch","public-network"],stability:At.Experimental},supportedModes:["managed","byok"],transports:[{type:"rest"}],preferredTransport:"rest",supportedAuthMethods:[],capabilities:{provides:[{key:"web.fetch",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{policyMode:{type:"string",enum:["governed","provider-pass-through","public-only"]}}}},secretSchema:{schema:{type:"object",properties:{}},example:{}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://github.com/lssm-tech/contractspec/tree/main/packages/integrations/provider-web-access"});function L(e){return e.register(Mt)}var Tt=c({key:"health.eightsleep",title:"Eight Sleep",description:"Eight Sleep integration for sleep sessions and biometrics via official, aggregator, or opt-in unofficial connectors.",docsUrl:"https://www.eightsleep.com/",tags:["eightsleep","sleep","unofficial"],capabilities:[{key:"health.sleep.read",version:"1.0.0"},{key:"health.biometrics.read",version:"1.0.0"}],defaultTransport:"aggregator-api"});function _(e){return e.register(Tt)}import{StabilityEnum as Pt}from"@lssm/lib.contracts-spec/ownership";var Rt=t({meta:{key:"ai-voice.elevenlabs",version:"1.0.0",category:"ai-voice-tts",title:"ElevenLabs Text-to-Speech",description:"ElevenLabs integration for neural voice synthesis and voice catalog access.",domain:"ai",owners:["platform.ai"],tags:["voice","tts","stt"],stability:Pt.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.elevenlabs.io"},{type:"sdk",packageName:"elevenlabs"}],preferredTransport:"rest",supportedAuthMethods:[{type:"header",headerName:"xi-api-key"}],capabilities:{provides:[{key:"ai.voice.tts",version:"1.0.0"},{key:"ai.voice.stt",version:"1.0.0"}]},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:4000},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.",keyRotationSupported:!1,quotaTrackingSupported:!0}});function H(e){return e.register(Rt)}import{StabilityEnum as Ct}from"@lssm/lib.contracts-spec/ownership";var Ut=t({meta:{key:"ai-voice.fal",version:"1.0.0",category:"ai-voice-tts",title:"Fal Generative Media Platform",description:"Fal integration for generative media models including voice, image, video, realtime, queue, storage, SDK, and MCP surfaces.",domain:"ai",owners:["platform.ai"],tags:["media","voice","tts","image","video","realtime","mcp"],stability:Ct.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Fal credentials are not declared because public Fal access depends on tenant-owned FAL_KEY/API-key or MCP auth; ContractSpec does not provision a first-party Fal account for tenants.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!1}),transports:[{type:"sdk",packageName:"@fal-ai/client",runtime:"universal"},{type:"rest",baseUrl:"https://fal.run"},{type:"mcp",transport:"http",url:"https://mcp.fal.ai/mcp"}],preferredTransport:"sdk",supportedAuthMethods:[{type:"header",headerName:"Authorization",valuePrefix:"Key "},{type:"bearer",tokenField:"apiKey"}],capabilities:{provides:[{key:"ai.voice.tts",version:"1.0.0"},{key:"ai.image.generation",version:"1.0.0"},{key:"ai.video.generation",version:"1.0.0"},{key:"ai.media.realtime",version:"1.0.0"},{key:"provider.mcp.fal",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{modelId:{type:"string",description:"Fal model endpoint identifier (e.g. fal-ai/chatterbox/text-to-speech)."},defaultVoiceUrl:{type:"string",description:"Optional reference audio URL used as default voice conditioning input."},defaultExaggeration:{type:"number",minimum:0,maximum:1,description:"Optional default exaggeration value for speech output."},defaultTemperature:{type:"number",minimum:0.05,maximum:2,description:"Optional default temperature for synthesis requests."},defaultCfg:{type:"number",minimum:0.1,maximum:1,description:"Optional default cfg value for synthesis requests."},pollIntervalMs:{type:"number",description:"Optional queue polling interval in milliseconds."},mcpUrl:{type:"string",description:"Optional Fal hosted MCP server URL."}}},example:{modelId:"fal-ai/chatterbox/text-to-speech",mcpUrl:"https://mcp.fal.ai/mcp",defaultVoiceUrl:"https://storage.googleapis.com/chatterbox-demo-samples/prompts/male_rickmorty.mp3",defaultExaggeration:0.25,defaultTemperature:0.7,defaultCfg:0.5,pollIntervalMs:1000}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Fal API key (FAL_KEY)."}}},example:{apiKey:"key-id:key-secret"}},healthCheck:{method:"custom",timeoutMs:7000},docsUrl:"https://fal.ai/models/fal-ai/chatterbox/text-to-speech/api",byokSetup:{setupInstructions:"Create a Fal API key, configure FAL_KEY for SDK/API calls, and use the hosted MCP URL with Bearer API-key auth. Fal account sign-in supports OAuth/SSO, but public MCP OAuth app auth is not documented as supported.",keyRotationSupported:!1,quotaTrackingSupported:!0}});function z(e){return e.register(Ut)}import{StabilityEnum as Ot}from"@lssm/lib.contracts-spec/ownership";var Et=t({meta:{key:"ai-image.fal",version:"1.0.0",category:"ai-image",title:"Fal Image Generation",description:"Fal integration for AI image generation using Flux and Stable Diffusion models.",domain:"ai",owners:["platform.ai"],tags:["image","generation","flux","stable-diffusion"],stability:Ot.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Fal image credentials are not declared because image generation access depends on tenant-owned FAL_KEY/API-key credentials; ContractSpec does not provision a first-party Fal account for tenants.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://fal.run"},{type:"sdk",packageName:"@fal-ai/client"}],preferredTransport:"rest",supportedAuthMethods:[{type:"header",headerName:"Authorization",valuePrefix:"Key "}],capabilities:{provides:[{key:"ai.image.generation",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{modelId:{type:"string",description:"Fal model endpoint (e.g. fal-ai/flux/dev)."},defaultFormat:{type:"string",enum:["png","jpg","webp"]},defaultGuidanceScale:{type:"number",minimum:1,maximum:20}}},example:{modelId:"fal-ai/flux/dev",defaultFormat:"png",defaultGuidanceScale:7.5}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Fal API key (FAL_KEY)."}}},example:{apiKey:"key-id:key-secret"}},healthCheck:{method:"custom",timeoutMs:7000},docsUrl:"https://fal.ai/models",byokSetup:{setupInstructions:"Create a Fal API key and ensure image generation model access is enabled.",keyRotationSupported:!1,quotaTrackingSupported:!0}});function N(e){return e.register(Et)}import{StabilityEnum as qt}from"@lssm/lib.contracts-spec/ownership";var jt=t({meta:{key:"meeting-recorder.fathom",version:"1.0.0",category:"meeting-recorder",title:"Fathom Meeting Recorder",description:"Fathom External API for meetings, transcripts, and webhook events.",domain:"productivity",owners:["platform.integrations"],tags:["meeting-recorder","fathom","transcripts"],stability:qt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Fathom credentials are not declared because meeting API and webhook access require tenant-owned Fathom API keys and workspace configuration.",secretFields:[{key:"apiKey",required:!0},{key:"webhookSecret"}],rotationSupported:!1}),transports:[{type:"rest"},{type:"webhook",inbound:{signatureHeader:"x-fathom-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"x-fathom-signature"}],capabilities:{provides:[{key:"meeting-recorder.meetings.read",version:"1.0.0"},{key:"meeting-recorder.transcripts.read",version:"1.0.0"},{key:"meeting-recorder.webhooks",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string",description:"Optional override for the Fathom API base URL. Defaults to https://api.fathom.ai/external/v1."},webhookUrl:{type:"string",description:"Webhook destination URL used when registering Fathom webhooks."},includeTranscript:{type:"boolean",description:"Include transcript data in Fathom webhook payloads."},includeSummary:{type:"boolean",description:"Include summary data in Fathom webhook payloads."},includeActionItems:{type:"boolean",description:"Include action items in Fathom webhook payloads."},includeCrmMatches:{type:"boolean",description:"Include CRM matches in Fathom webhook payloads."},triggeredFor:{type:"array",items:{type:"string"},description:"Recording scopes to trigger webhooks for (e.g., my_recordings)."}}},example:{baseUrl:"https://api.fathom.ai/external/v1",webhookUrl:"https://example.com/webhooks/fathom",includeTranscript:!0,includeSummary:!0,includeActionItems:!1,includeCrmMatches:!1,triggeredFor:["my_recordings"]}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Fathom API key used in the X-Api-Key header."},webhookSecret:{type:"string",description:"Optional webhook secret used to verify Fathom webhook signatures."}}},example:{apiKey:"fathom-***",webhookSecret:"whsec_***"}},healthCheck:{method:"list",timeoutMs:8000},docsUrl:"https://developers.fathom.ai/",constraints:{rateLimit:{rpm:60}},byokSetup:{setupInstructions:"Generate an API key in Fathom settings and optionally configure webhooks for meeting content readiness.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function W(e){return e.register(jt)}var Dt=s({key:"web-access.firecrawl",title:"Firecrawl Web Access",description:"Firecrawl REST search, scrape, extract, map, and crawl operations.",tags:["search","scraping","extract","crawl"],transports:[{type:"rest",baseUrl:"https://api.firecrawl.dev/v2"}],preferredTransport:"rest",auth:[{type:"bearer",tokenField:"apiKey"}],secretFields:["apiKey"],capabilities:["web.search","web.fetch","web.extract","web.map","web.crawl"],docsUrl:"https://docs.firecrawl.dev/api-reference/v2-introduction"});function B(e){return e.register(Dt)}import{StabilityEnum as Ft}from"@lssm/lib.contracts-spec/ownership";var Kt=t({meta:{key:"meeting-recorder.fireflies",version:"1.0.0",category:"meeting-recorder",title:"Fireflies.ai Meeting Recorder",description:"Fireflies GraphQL API for meeting transcripts, metadata, and webhook events.",domain:"productivity",owners:["platform.integrations"],tags:["meeting-recorder","fireflies","transcripts"],stability:Ft.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Fireflies credentials are not declared because GraphQL and webhook access depend on tenant-owned Fireflies API keys and developer settings.",secretFields:[{key:"apiKey",required:!0},{key:"webhookSecret"}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://api.fireflies.ai/graphql"},{type:"webhook",inbound:{signatureHeader:"x-fireflies-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"x-fireflies-signature"}],capabilities:{provides:[{key:"meeting-recorder.meetings.read",version:"1.0.0"},{key:"meeting-recorder.transcripts.read",version:"1.0.0"},{key:"meeting-recorder.webhooks",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string",description:"Optional override for the Fireflies GraphQL endpoint. Defaults to https://api.fireflies.ai/graphql."},webhookUrl:{type:"string",description:"Webhook destination URL configured in Fireflies developer settings."},webhookEvents:{type:"array",items:{type:"string"},description:"Webhook events to subscribe to (e.g., Transcription completed)."},transcriptsPageSize:{type:"number",description:"Number of transcripts to request per GraphQL query."}}},example:{baseUrl:"https://api.fireflies.ai/graphql",webhookUrl:"https://example.com/webhooks/fireflies",webhookEvents:["Transcription completed"],transcriptsPageSize:25}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Fireflies API key for GraphQL requests."},webhookSecret:{type:"string",description:"Optional webhook secret used to verify x-hub-signature HMAC payloads."}}},example:{apiKey:"fireflies-***",webhookSecret:"fireflies-webhook-secret"}},healthCheck:{method:"custom",timeoutMs:6000},docsUrl:"https://docs.fireflies.ai/getting-started/introduction",byokSetup:{setupInstructions:"Create a Fireflies API key and optionally configure webhook settings in Developer Settings.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function V(e){return e.register(Kt)}var Gt=c({key:"health.fitbit",title:"Fitbit",description:"Fitbit integration for activity, sleep, heart rate, and biometrics.",docsUrl:"https://dev.fitbit.com/build/reference/web-api/",tags:["fitbit","official-api"],byokScopes:["activity","heartrate","sleep","nutrition","weight","profile"]});function Y(e){return e.register(Gt)}import{StabilityEnum as Lt}from"@lssm/lib.contracts-spec/ownership";var _t=t({meta:{key:"crm.fullenrich",version:"1.0.0",category:"crm",title:"FullEnrich Sales Intelligence",description:"FullEnrich contact enrichment, reverse email lookup, search, credits, webhook, and remote MCP metadata integration.",domain:"sales-intelligence",owners:["platform.integrations"],tags:["sales-intelligence","contact-enrichment","fullenrich","mcp"],stability:Lt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"FullEnrich credentials are tenant-owned; ContractSpec does not provide a shared Managed FullEnrich tenant.",secretFields:[{key:"apiKey"}],rotationSupported:!1,setupSteps:["Create a FullEnrich API key in the vendor dashboard.","Store the key in an integration.runtime secret provider.","Use OAuth only for the remote FullEnrich MCP endpoint."]}),transports:[{type:"rest",baseUrl:"https://app.fullenrich.com/api/v2"},{type:"webhook"},{type:"mcp",transport:"http",url:"https://mcp.fullenrich.com/mcp"}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer",tokenField:"apiKey"},{type:"oauth2",grantType:"authorization_code",tokenUrl:"https://mcp.fullenrich.com/oauth/token",authorizationUrl:"https://mcp.fullenrich.com/oauth/authorize",scopes:["openid","offline_access"],pkce:!0}],capabilities:{provides:[{key:"sales-intelligence.contact-enrichment",version:"1.0.0"},{key:"sales-intelligence.reverse-email",version:"1.0.0"},{key:"sales-intelligence.people-search",version:"1.0.0"},{key:"sales-intelligence.company-search",version:"1.0.0"},{key:"provider.mcp.fullenrich",version:"1.0.0"},{key:"provider.webhook.fullenrich",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},webhookPath:{type:"string"},pollingMinIntervalSeconds:{type:"number",minimum:60}}},example:{baseUrl:"https://app.fullenrich.com/api/v2",webhookPath:"/webhooks/fullenrich/enrichment",pollingMinIntervalSeconds:300}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"FullEnrich API key."}}},example:{apiKey:"fe_***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://fullenrich.com/",byokSetup:{setupInstructions:"Use API keys for FullEnrich REST APIs. Prefer webhooks for async enrichment and reverse-email results; use slow polling only as fallback.",requiredScopes:["FullEnrich API key"],validationEndpoint:"https://app.fullenrich.com/api/v2",keyRotationSupported:!1,quotaTrackingSupported:!0}});function Q(e){return e.register(_t)}var Ht=c({key:"health.garmin",title:"Garmin",description:"Garmin integration for fitness activity, wellness, and sleep metrics.",docsUrl:"https://developer.garmin.com/gc-developer-program/overview/",tags:["garmin","official-api","partner"],byokSetupInstructions:"Use Garmin partner credentials or aggregator routes; enable unofficial connector only with explicit opt-in.",defaultTransport:"aggregator-api"});function J(e){return e.register(Ht)}import{StabilityEnum as zt}from"@lssm/lib.contracts-spec/ownership";var Nt=t({meta:{key:"storage.gcs",version:"1.0.0",category:"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:zt.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://storage.googleapis.com"},{type:"sdk",packageName:"@google-cloud/storage",minVersion:"7.0.0"}],preferredTransport:"sdk",supportedAuthMethods:[{type:"service-account",credentialFormat:"json-key"},{type:"api-key"}],capabilities:{provides:[{key:"storage.objects",version:"1.0.0"}]},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:4000},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.",keyRotationSupported:!1,quotaTrackingSupported:!0}});function X(e){return e.register(Nt)}import{StabilityEnum as Wt}from"@lssm/lib.contracts-spec/ownership";var Bt=t({meta:{key:"email.gmail",version:"1.0.0",category:"email",title:"Google Gmail API",description:"Gmail integration supporting inbound thread ingestion and outbound transactional email.",domain:"communications",owners:["platform.messaging"],tags:["email","gmail"],stability:Wt.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://gmail.googleapis.com"},{type:"sdk",packageName:"googleapis",minVersion:"130.0.0"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/gmail.modify"],pkce:!0},{type:"service-account",credentialFormat:"json-key"}],capabilities:{provides:[{key:"email.inbound",version:"1.0.0"},{key:"email.outbound",version:"1.0.0"},{key:"provider.delta.watch",version:"1.0.0"}]},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."},webhookTopic:{type:"string",description:"Optional Pub/Sub topic used for Gmail watch notifications."},historyCursor:{type:"string",description:"Optional Gmail history cursor to resume incremental 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:4000},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.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function Z(e){return e.register(Bt)}import{StabilityEnum as Vt}from"@lssm/lib.contracts-spec/ownership";var $t=t({meta:{key:"calendar.google",version:"1.0.0",category:"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:Vt.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://www.googleapis.com/calendar"},{type:"sdk",packageName:"googleapis"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/calendar"],pkce:!0},{type:"service-account",credentialFormat:"json-key"}],capabilities:{provides:[{key:"calendar.events",version:"1.0.0"}]},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:4000},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.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function ee(e){return e.register($t)}import{StabilityEnum as Yt}from"@lssm/lib.contracts-spec/ownership";var Qt=t({meta:{key:"storage.google-drive",version:"1.0.0",category:"storage",title:"Google Drive API",description:"Google Drive integration for file search, file retrieval, change watches, and knowledge ingestion.",domain:"productivity",owners:["platform.integrations"],tags:["storage","google-drive","knowledge"],stability:Yt.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://www.googleapis.com/drive/v3"},{type:"sdk",packageName:"googleapis"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/drive.metadata.readonly"],pkce:!0},{type:"service-account",credentialFormat:"json-key"}],capabilities:{provides:[{key:"storage.objects",version:"1.0.0"},{key:"knowledge.ingestion.drive",version:"1.0.0"},{key:"provider.delta.watch",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{driveId:{type:"string",description:"Optional shared drive identifier."},query:{type:"string",description:"Optional Drive search query for scoped sync."},includeItemsFromAllDrives:{type:"boolean",description:"Whether shared-drive files are included."},webhookUrl:{type:"string",description:"Optional webhook endpoint for Drive change watches."}}},example:{query:"mimeType = 'text/plain' and trashed = false",includeItemsFromAllDrives:!0}},secretSchema:{schema:{type:"object",properties:{clientId:{type:"string"},clientSecret:{type:"string"},refreshToken:{type:"string"},clientEmail:{type:"string"},privateKey:{type:"string"},projectId:{type:"string"}}},example:{clientId:"xxx.apps.googleusercontent.com",refreshToken:"refresh-token"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.google.com/drive/api",constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:"Authorize Google Drive readonly scopes or share the target Drive folders with a service account before enabling sync.",requiredScopes:["https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/drive.metadata.readonly"],keyRotationSupported:!1,quotaTrackingSupported:!1}});function te(e){return e.register(Qt)}import{StabilityEnum as Jt}from"@lssm/lib.contracts-spec/ownership";var Xt=t({meta:{key:"ai-voice.gradium",version:"1.0.0",category:"ai-voice-conversational",title:"Gradium Realtime Voice AI",description:"Gradium integration for realtime TTS, STT, voice library, REST, and WebSocket protocol access.",domain:"ai",owners:["platform.ai"],tags:["voice","tts","stt","realtime","websocket"],stability:Jt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Gradium credentials are not declared because ContractSpec does not provide a first-party Gradium managed account or OAuth app surface; tenants must supply their own Gradium API key.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://api.gradium.ai/api"},{type:"websocket",url:"wss://api.gradium.ai/api",protocol:"mixed"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key",headerName:"x-api-key"}],capabilities:{provides:[{key:"ai.voice.tts",version:"1.0.0"},{key:"ai.voice.stt",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultVoiceId:{type:"string",description:"Optional default voice identifier used for synthesis."},region:{type:"string",enum:["eu","us"],description:"Gradium region used by the SDK (eu or us)."},baseUrl:{type:"string",description:"Optional API base URL override for private routing or proxies."},websocketBaseUrl:{type:"string",description:"Optional WebSocket base URL for realtime TTS/STT."},timeoutMs:{type:"number",description:"Optional request timeout in milliseconds."},outputFormat:{type:"string",enum:["wav","pcm","opus","ulaw_8000","alaw_8000","pcm_16000","pcm_24000"],description:"Optional default output format used when no format is specified."}}},example:{defaultVoiceId:"YTpq7expH9539ERJ",region:"eu",baseUrl:"https://api.gradium.ai/api",websocketBaseUrl:"wss://api.gradium.ai/api",timeoutMs:15000,outputFormat:"wav"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Gradium API key with TTS/STT access."}}},example:{apiKey:"gd_***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.gradium.ai/api-reference/introduction",byokSetup:{setupInstructions:"Create a Gradium API key, select the target region, and store credentials in your tenant secret provider. Public docs expose REST/WebSocket API-key access and Python SDK; no official JS SDK, MCP, or OAuth app surface is documented.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function re(e){return e.register(Xt)}import{StabilityEnum as Zt}from"@lssm/lib.contracts-spec/ownership";var er=t({meta:{key:"meeting-recorder.granola",version:"1.0.0",category:"meeting-recorder",title:"Granola Meeting Notes",description:"Granola meeting notes and transcripts via Enterprise API or MCP transport.",domain:"productivity",owners:["platform.integrations"],tags:["meeting-recorder","granola","transcripts"],stability:Zt.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Granola credentials are not declared because Granola access is tied to tenant/user browser OAuth, MCP proxy auth, or tenant enterprise API keys rather than a ContractSpec-managed provider account.",secretFields:[{key:"apiKey"},{key:"mcpAccessToken"}],rotationSupported:!1}),transports:[{type:"rest"},{type:"mcp",transport:"http"}],preferredTransport:"mcp",supportedAuthMethods:[{type:"api-key"},{type:"bearer"}],capabilities:{provides:[{key:"meeting-recorder.meetings.read",version:"1.0.0"},{key:"meeting-recorder.transcripts.read",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string",description:"Optional override for the Granola API base URL. Defaults to https://public-api.granola.ai for API transport."},transport:{type:"string",enum:["api","mcp"],description:"Transport mode for Granola integration. Use api for Enterprise API or mcp for broader MCP access."},mcpUrl:{type:"string",description:"Optional override for Granola MCP URL. Defaults to https://mcp.granola.ai/mcp."},mcpHeaders:{type:"object",additionalProperties:{type:"string"},description:"Optional static headers for MCP gateway/proxy setups."},pageSize:{type:"number",description:"Page size for listing notes (maximum 30 per Granola API)."}}},example:{transport:"mcp",mcpUrl:"https://mcp.granola.ai/mcp",pageSize:10}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string",description:"Granola API key used as a Bearer token for Enterprise API requests (transport=api)."},mcpAccessToken:{type:"string",description:"Optional bearer token for MCP proxy/gateway auth (transport=mcp)."}}},example:{mcpAccessToken:"granola-mcp-***"}},healthCheck:{method:"list",timeoutMs:8000},docsUrl:"https://docs.granola.ai/help-center/sharing/integrations/mcp",byokSetup:{setupInstructions:"Use Granola MCP for browser OAuth access, or configure an Enterprise API key for REST transport.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function oe(e){return e.register(er)}var tr=t({meta:{key:"ai-media.higgsfield",version:"1.0.0",category:"ai-image",title:"Higgsfield Generative Media",description:"Asynchronous image, image-to-video and talking-presenter generation through a tenant-isolated HTTP adapter.",domain:"ai",owners:["platform.ai"],tags:["image","video","ugc","marketing"],stability:"experimental"},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed credential provisioning and billing have not been qualified. Each installation supplies its own scoped Higgsfield credentials.",secretFields:[{key:"apiKey",required:!0},{key:"apiSecret",required:!0}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://platform.higgsfield.ai"}],preferredTransport:"rest",supportedAuthMethods:[{type:"header",headerName:"Authorization",valuePrefix:"Key "}],capabilities:{provides:[{key:"ai.image.generation",version:"1.0.0"},{key:"ai.video.generation",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{outputHosts:{type:"array",items:{type:"string"}}},required:["outputHosts"]},example:{outputHosts:["cdn.example.com"]}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string"},apiSecret:{type:"string"}},required:["apiKey","apiSecret"]},example:{apiKey:"example-key-id",apiSecret:"example-key-secret"}},healthCheck:{method:"custom",timeoutMs:1e4},docsUrl:"https://github.com/higgsfield-ai/higgsfield-js",byokSetup:{setupInstructions:"Provide a Higgsfield key ID and secret through the host secret resolver. Qualify permitted input/output asset hosts and generation modes. Poll existing request IDs; do not retry uncertain submissions.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function ie(e){return e.register(tr)}import{StabilityEnum as rr}from"@lssm/lib.contracts-spec/ownership";var or=t({meta:{key:"project-management.jira",version:"1.0.0",category:"project-management",title:"Jira Cloud",description:"Jira Cloud integration for creating and tracking work items.",domain:"productivity",owners:["@platform.integrations"],tags:["project-management","jira"],stability:rr.Beta},supportedModes:["managed","byok"],transports:[{type:"rest"},{type:"webhook",inbound:{signatureHeader:"x-atlassian-webhook-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"basic"},{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://auth.atlassian.com/authorize",tokenUrl:"https://auth.atlassian.com/oauth/token",scopes:["read:jira-work","write:jira-work"]}],capabilities:{provides:[{key:"project-management.work-items",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["siteUrl"],properties:{siteUrl:{type:"string",description:"Jira Cloud site URL (e.g., https://acme.atlassian.net)."},projectKey:{type:"string",description:"Default Jira project key for new issues."},issueType:{type:"string",description:"Default Jira issue type (e.g., Task, Story)."},defaultLabels:{type:"array",items:{type:"string"},description:"Labels applied to each issue by default."},issueTypeMap:{type:"object",additionalProperties:{type:"string"},description:"Optional mapping from work item types to Jira issue types."}}},example:{siteUrl:"https://acme.atlassian.net",projectKey:"PM",issueType:"Task"}},secretSchema:{schema:{type:"object",required:["email","apiToken"],properties:{email:{type:"string",description:"Jira account email used for API token auth."},apiToken:{type:"string",description:"Jira Cloud API token for the account."}}},example:{email:"user@acme.com",apiToken:"jira_api_token"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/",constraints:{},byokSetup:{setupInstructions:"Create a Jira API token and store it with the associated account email.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function ae(e){return e.register(or)}import{StabilityEnum as ir}from"@lssm/lib.contracts-spec/ownership";var ar=t({meta:{key:"project-management.linear",version:"1.0.0",category:"project-management",title:"Linear",description:"Linear integration for issue tracking and project management workflows.",domain:"productivity",owners:["@platform.integrations"],tags:["project-management","linear"],stability:ir.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.linear.app"},{type:"webhook",inbound:{signatureHeader:"linear-signature",signingAlgorithm:"hmac-sha256"}},{type:"sdk",packageName:"@linear/sdk"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://linear.app/oauth/authorize",tokenUrl:"https://api.linear.app/oauth/token",scopes:["read","write","issues:create"]}],capabilities:{provides:[{key:"project-management.work-items",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["teamId"],properties:{teamId:{type:"string",description:"Linear team ID that owns created issues."},projectId:{type:"string",description:"Optional default project ID for new issues."},stateId:{type:"string",description:"Optional default workflow state ID."},assigneeId:{type:"string",description:"Optional default assignee ID."},labelIds:{type:"array",items:{type:"string"},description:"Optional label IDs applied to each issue."},tagLabelMap:{type:"object",additionalProperties:{type:"string"},description:"Optional mapping of tags to Linear label IDs (tag -> labelId)."}}},example:{teamId:"team_123",projectId:"proj_456",labelIds:["label_1","label_2"]}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Linear API key (personal or service token)."}}},example:{apiKey:"lin_api_key"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.linear.app",constraints:{},byokSetup:{setupInstructions:"Create a Linear API key with issue:write permission and store it as a secret.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function ne(e){return e.register(ar)}import{StabilityEnum as nr}from"@lssm/lib.contracts-spec/ownership";function u(e){let r=[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://www.linkedin.com/oauth/v2/authorization",tokenUrl:"https://www.linkedin.com/oauth/v2/accessToken",scopes:e.scopes,pkce:!0}];if(e.clientCredentials)r.push({type:"oauth2",grantType:"client_credentials",tokenUrl:"https://www.linkedin.com/oauth/v2/accessToken",scopes:e.scopes});return t({meta:{key:e.key,version:"1.0.0",category:e.category,title:e.title,description:e.description,domain:"linkedin",owners:["platform.integrations"],tags:["linkedin",...e.tags],stability:nr.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed LinkedIn credentials require separately evidenced product and agreement approval.",secretFields:[{key:"clientId",required:!0},{key:"clientSecret",required:!0}],rotationSupported:!0,setupSteps:["Create or select a LinkedIn developer application.","Obtain approval for every required LinkedIn product.","Store client credentials and OAuth grants in a secret provider."]}),transports:[{type:"rest",baseUrl:"https://api.linkedin.com",defaultHeaders:{"X-Restli-Protocol-Version":"2.0.0"},apiVersionHeader:"LinkedIn-Version"},...e.webhooks?[{type:"webhook"}]:[]],preferredTransport:"rest",supportedAuthMethods:r,versionPolicy:{currentVersion:"202605",supportedVersions:[{version:"202605",status:"stable"}],versionHeader:"LinkedIn-Version"},capabilities:{provides:e.capabilities.map((o)=>({key:o,version:"1.0.0"}))},configSchema:{schema:{type:"object",required:["installationId"],properties:{installationId:{type:"string"},apiVersion:{type:"string"}}}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string"},clientSecret:{type:"string"}}},example:{clientId:"***",clientSecret:"***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:e.docsUrl,byokSetup:{setupInstructions:"Use only official LinkedIn APIs and an approved developer application. Product approval is evaluated per installation.",requiredScopes:e.scopes,keyRotationSupported:!0,quotaTrackingSupported:!0}})}var sr=u({key:"social-network.linkedin-community",title:"LinkedIn Community Management",description:"Official LinkedIn organization, post, comment, reaction, moderation, analytics, and webhook contracts.",category:"custom",tags:["organization","community-management","posts","webhooks"],capabilities:["linkedin.identity.organization.read","linkedin.content.posts.read","linkedin.content.posts.publish","linkedin.content.posts.manage","linkedin.community.comments.read","linkedin.community.comments.write","linkedin.community.reactions.read","linkedin.community.reactions.write","linkedin.analytics.community.read","linkedin.webhooks.subscriptions.manage","linkedin.webhooks.events.read"],scopes:["r_organization_social","w_organization_social","rw_organization_admin"],docsUrl:"https://learn.microsoft.com/en-us/linkedin/marketing/community-management/community-management-overview",webhooks:!0});function se(e){return e.register(sr)}var pr=u({key:"advertising.linkedin-marketing",title:"LinkedIn Marketing",description:"Official LinkedIn ad accounts, campaigns, creatives, audiences, lead sync, reporting, and webhook contracts.",category:"analytics",tags:["marketing","ads","lead-sync","webhooks"],capabilities:["linkedin.analytics.ads.read","linkedin.leads.sync","linkedin.ads.accounts.read","linkedin.ads.campaigns.read","linkedin.ads.campaigns.write","linkedin.ads.creatives.write","linkedin.ads.audiences.read","linkedin.ads.reporting.read","linkedin.webhooks.subscriptions.manage","linkedin.webhooks.events.read"],scopes:["r_ads","rw_ads","r_ads_reporting","r_marketing_leadgen_automation"],docsUrl:"https://learn.microsoft.com/en-us/linkedin/marketing/",webhooks:!0,clientCredentials:!0});function pe(e){return e.register(pr)}var cr=u({key:"social-network.linkedin-member",title:"LinkedIn Member",description:"Official LinkedIn sign-in, authenticated member profile, connection, and member-share contracts.",category:"custom",tags:["member","identity","connections","posts"],capabilities:["linkedin.identity.member.read","linkedin.network.connections.read","linkedin.content.posts.draft","linkedin.content.posts.read","linkedin.content.posts.publish"],scopes:["openid","profile","w_member_social"],docsUrl:"https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access"});function ce(e){return e.register(cr)}var dr=u({key:"messaging.linkedin",title:"LinkedIn Communications",description:"Partner-restricted official LinkedIn invitation, conversation, message, and inbox contracts.",category:"messaging",tags:["communications","invitations","inbox","approval-required"],capabilities:["linkedin.network.invitations.read","linkedin.network.invitations.write","linkedin.messaging.threads.read","linkedin.messaging.messages.read","linkedin.messaging.messages.write"],scopes:[],docsUrl:"https://learn.microsoft.com/en-us/linkedin/shared/integrations/communications/overview"});function de(e){return e.register(dr)}var lr=u({key:"sales-intelligence.linkedin-sales-navigator",title:"LinkedIn Sales Navigator",description:"Partner-restricted official Sales Navigator lead, account, CRM Sync, association, and employment-validation contracts.",category:"crm",tags:["sales-navigator","crm-sync","approval-required"],capabilities:["linkedin.sales.leads.search","linkedin.sales.accounts.search","linkedin.sales.crm-sync","linkedin.sales.profile-association","linkedin.sales.employment-validation","linkedin.analytics.sales.read"],scopes:[],docsUrl:"https://learn.microsoft.com/en-us/linkedin/sales/"});function le(e){return e.register(lr)}var gr=s({key:"web-access.linkup",title:"Linkup Web Access",description:"Linkup Search, Fetch, Research, asynchronous Tasks, SDK, x402, and MCP access.",tags:["search","fetch","research","mcp"],transports:[{type:"sdk",packageName:"linkup-sdk",minVersion:"3.4.0",runtime:"node"},{type:"rest",baseUrl:"https://api.linkup.so/v1"},{type:"mcp",transport:"http",url:"https://mcp.linkup.so/mcp",toolPrefix:"linkup"},{type:"mcp",transport:"stdio",command:"npx",args:["-y","linkup-mcp-server"],toolPrefix:"linkup"}],preferredTransport:"sdk",auth:[{type:"bearer",tokenField:"apiKey"},{type:"x402",authority:"injected-payment-port"}],secretFields:["apiKey","mcpToken"],capabilities:["web.search","web.fetch","web.research","provider.mcp.linkup"],docsUrl:"https://docs.linkup.so/pages/documentation/get-started/introduction"});function ge(e){return e.register(gr)}var me={key:"web-access.massive",title:"Massive Web Access",description:"Massive Web Render search/browser execution, CDP sessions, reporting, and residential proxy access.",tags:["render","browser","residential-proxy"],preferredTransport:"rest",secretFields:["apiKey","proxyUsername","proxyPassword"],capabilities:["web.search","web.fetch","web.browser","web.proxy","web.usage"],docsUrl:"https://docs.joinmassive.com/llms.txt"},mr=s({...me,transports:[{type:"rest",baseUrl:"https://render.joinmassive.com"},{type:"websocket",url:"wss://render.joinmassive.com/browser",protocol:"cdp",discoveryOperationKey:"web-access.massive.browser.connection.describe"},{type:"proxy",protocols:["http","https","socks5","socks5h"],remoteDns:!0,geoTargeting:!0,stickySessions:!0}],auth:[{type:"header",headerName:"X-API-Key"},{type:"basic",usernameField:"proxyUsername",passwordField:"proxyPassword"}]}),ur=s({...me,version:"1.1.0",transports:[{type:"rest",baseUrl:"https://render.joinmassive.com"},{type:"webhook",inbound:{verification:"host-policy",reason:"Massive callbacks have no advertised signature; bind an opaque route secret and host network policy.",registrationSupported:!1}},{type:"websocket",url:"wss://render.joinmassive.com/browser",protocol:"cdp",discoveryOperationKey:"web-access.massive.browser.connection.describe"},{type:"proxy",protocols:["http","https","socks5","socks5h"],host:"network.joinmassive.com",ports:{http:65534,https:65535,socks5:65533,socks5h:65533},remoteDns:!0,geoTargeting:!0,stickySessions:!0}],auth:[{type:"bearer",tokenField:"apiKey"},{type:"basic",usernameField:"proxyUsername",passwordField:"proxyPassword"}]});function ue(e){return e.register(mr).register(ur)}import{StabilityEnum as yr}from"@lssm/lib.contracts-spec/ownership";var hr=t({meta:{key:"messaging.github",version:"2.0.0",category:"messaging",title:"GitHub",description:"Full-featured GitHub integration with repository, issue, and pull request management, OAuth2 and GitHub App authentication, MCP server support, and comprehensive webhook handling.",domain:"developer-experience",owners:["platform.integrations"],tags:["messaging","github","repository","issues","pull-requests","oauth2","github-app","mcp","webhooks"],stability:yr.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.github.com",apiVersionHeader:"X-GitHub-Api-Version"},{type:"webhook",inbound:{signatureHeader:"x-hub-signature-256",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer"},{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",scopes:["repo","read:org"]},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"x-hub-signature-256"}],versionPolicy:{currentVersion:"2022-11-28",supportedVersions:[{version:"2022-11-28",status:"stable"}],versionHeader:"X-GitHub-Api-Version"},capabilities:{provides:[{key:"messaging.inbound",version:"1.0.0"},{key:"messaging.outbound",version:"1.0.0"},{key:"repository.github",version:"1.0.0"},{key:"issues.github",version:"1.0.0"},{key:"pull-requests.github",version:"1.0.0"},{key:"provider.mcp.github",version:"1.0.0"},{key:"provider.webhook.github",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultOwner:{type:"string",description:"Optional default GitHub repository owner."},defaultRepo:{type:"string",description:"Optional default GitHub repository name."},apiBaseUrl:{type:"string",description:"Optional GitHub REST API base URL (useful for enterprise instances)."}}},example:{defaultOwner:"lssm-tech",defaultRepo:"contractspec"}},secretSchema:{schema:{type:"object",required:["token","webhookSecret"],properties:{token:{type:"string",description:"GitHub API token used to post comments and automation messages."},webhookSecret:{type:"string",description:"Secret used to verify inbound GitHub webhook signatures."}}},example:{token:"ghp_***",webhookSecret:"***"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://docs.github.com/en/rest",constraints:{rateLimit:{rpm:300}},byokSetup:{setupInstructions:"Create a GitHub token or app installation token with repository access and configure the webhook secret.",requiredScopes:["repo","read:org"],keyRotationSupported:!0,quotaTrackingSupported:!1}});function ye(e){return e.register(hr)}import{StabilityEnum as fr}from"@lssm/lib.contracts-spec/ownership";var kr=t({meta:{key:"messaging.matrix",version:"1.0.0",category:"messaging",title:"Matrix",description:"Matrix managed/BYOK messaging integration for room events, outbound replies, and bridge-aware interoperability metadata.",domain:"communications",owners:["platform.messaging"],tags:["messaging","matrix","rooms","bridges","interoperability","byok"],stability:fr.Beta},supportedModes:["managed","byok"],transports:[{type:"sdk",packageName:"matrix-js-sdk",minVersion:"38.0.0",runtime:"universal"},{type:"rest",acceptContentTypes:["application/json"]}],preferredTransport:"sdk",supportedAuthMethods:[{type:"bearer",tokenField:"accessToken"}],capabilities:{provides:[{key:"messaging.inbound",version:"1.0.0"},{key:"messaging.outbound",version:"1.0.0"},{key:"messaging.matrix.rooms",version:"1.0.0"},{key:"messaging.bridge.metadata",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["homeserverUrl"],properties:{homeserverUrl:{type:"string",description:"Matrix homeserver base URL for Client-Server API access."},defaultRoomId:{type:"string",description:"Optional default Matrix room ID for outbound messages."},defaultUserId:{type:"string",description:"Optional Matrix user ID associated with the connection."},bridgeMode:{type:"string",enum:["none","external","managed-metadata"],description:"Whether this connection describes externally managed Matrix bridges."}}},example:{homeserverUrl:"https://matrix.example.com",defaultRoomId:"!room:example.com",defaultUserId:"@contractspec:example.com",bridgeMode:"managed-metadata"}},secretSchema:{schema:{type:"object",required:["accessToken"],properties:{accessToken:{type:"string",description:"Matrix access token used by the SDK-backed adapter."},deviceId:{type:"string",description:"Optional Matrix device ID for deployments that bind a bot device."},appserviceToken:{type:"string",description:"Optional externally managed appservice token when a bridge operator provides one."}}},example:{accessToken:"***",deviceId:"DEVICEID"}},bridgeMetadata:{provisioning:"external",preserveDirectProviders:!0,docsUrl:"https://matrix.org/ecosystem/bridges/",targets:[{key:"slack",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0,caveats:["Use the direct Slack provider when first-party API access is configured."]},{key:"telegram",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0},{key:"whatsapp",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0},{key:"discord",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!1},{key:"email",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0},{key:"signal",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!1},{key:"sms",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0},{key:"teams",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0},{key:"github",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!0},{key:"irc",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!1},{key:"xmpp",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!1},{key:"zulip",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!1},{key:"mattermost",capabilities:[{key:"messaging.inbound",version:"1.0.0"}],directProviderPreferred:!1}]},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://matrix.org/docs/",byokSetup:{setupInstructions:"Provide an existing Matrix homeserver URL, bot/user access token, and optional default room. Homeserver hosting and bridge provisioning are operated outside this package.",keyRotationSupported:!0,quotaTrackingSupported:!1,provisioningSteps:["Choose or operate a Matrix homeserver outside ContractSpec.","Create a Matrix bot/user and obtain an access token.","Invite the bot/user to rooms that ContractSpec may read or write.","Configure any bridges externally and record bridge metadata on the connection."]}});function he(e){return e.register(kr)}import{StabilityEnum as br}from"@lssm/lib.contracts-spec/ownership";var vr=t({meta:{key:"messaging.slack",version:"2.0.0",category:"messaging",title:"Slack",description:"Full-featured Slack integration with messaging, conversations, users, reactions, files, and search \u2014 plus OAuth2, MCP server, and Event API support.",domain:"communications",owners:["platform.messaging"],tags:["messaging","slack","conversations","users","reactions","files","search","oauth2","mcp","webhooks"],stability:br.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://slack.com/api"},{type:"webhook",inbound:{signatureHeader:"x-slack-signature",signingAlgorithm:"hmac-sha256"}},{type:"sdk",packageName:"@slack/web-api"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://slack.com/oauth/v2/authorize",tokenUrl:"https://slack.com/api/oauth.v2.access",scopes:["chat:write","channels:history","channels:read","channels:manage","users:read","users:read.email","reactions:write","reactions:read","files:write","files:read","search:read","commands"]},{type:"bearer"},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"x-slack-signature"}],capabilities:{provides:[{key:"messaging.inbound",version:"1.0.0"},{key:"messaging.outbound",version:"1.0.0"},{key:"messaging.interactions",version:"1.0.0"},{key:"conversations.slack",version:"1.0.0"},{key:"users.slack",version:"1.0.0"},{key:"reactions.slack",version:"1.0.0"},{key:"files.slack",version:"1.0.0"},{key:"search.slack",version:"1.0.0"},{key:"provider.mcp.slack",version:"1.0.0"},{key:"provider.webhook.slack",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultChannelId:{type:"string",description:"Optional default Slack channel ID for outbound messages."},apiBaseUrl:{type:"string",description:"Optional Slack API base URL (for enterprise grid instances)."},allowUserMentions:{type:"boolean",description:"Whether user mention expansion is enabled in responses."}}},example:{defaultChannelId:"C0123456789",allowUserMentions:!0}},secretSchema:{schema:{type:"object",required:["botToken","signingSecret"],properties:{botToken:{type:"string",description:"Slack bot token (xoxb-*) used for Web API calls."},userToken:{type:"string",description:"Optional Slack user token (xoxp-*) for user-scoped operations."},signingSecret:{type:"string",description:"Slack signing secret used to verify inbound webhook signatures."},appToken:{type:"string",description:"Optional app-level token for socket mode or advanced API usage."}}},example:{botToken:"xoxb-***",signingSecret:"***"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://api.slack.com",constraints:{rateLimit:{rpm:200}},byokSetup:{setupInstructions:"Create a Slack app, install it to your workspace, then provide bot token and signing secret.",requiredScopes:["chat:write","channels:history","channels:read","users:read","reactions:write","files:write"],keyRotationSupported:!0,quotaTrackingSupported:!1}});function fe(e){return e.register(vr)}import{StabilityEnum as Ir}from"@lssm/lib.contracts-spec/ownership";var Sr=t({meta:{key:"messaging.teams",version:"1.0.0",category:"messaging",title:"Microsoft Teams",description:"Full-featured Microsoft Teams integration with messaging, channels, teams, and users via Microsoft Graph API \u2014 plus Azure AD OAuth2, MCP server, and webhook/subscription support.",domain:"communications",owners:["platform.messaging"],tags:["messaging","teams","microsoft-teams","channels","users","graph-api","oauth2","mcp","webhooks"],stability:Ir.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://graph.microsoft.com/v1.0",apiVersionHeader:"ConsistencyLevel"},{type:"webhook",inbound:{signatureHeader:"x-ms-notification-auth",signingAlgorithm:"hmac-sha256"}},{type:"sdk",packageName:"@microsoft/microsoft-graph-client"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/token",scopes:["ChannelMessage.Send","Channel.ReadBasic.All","Team.ReadBasic.All","User.Read.All","Chat.ReadWrite"]},{type:"oauth2",grantType:"client_credentials",authorizationUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/token",scopes:["https://graph.microsoft.com/.default"]},{type:"bearer"}],versionPolicy:{currentVersion:"v1.0",supportedVersions:[{version:"v1.0",status:"stable"}],versionHeader:"ConsistencyLevel"},capabilities:{provides:[{key:"messaging.outbound",version:"1.0.0"},{key:"messaging.inbound",version:"1.0.0"},{key:"channels.teams",version:"1.0.0"},{key:"teams.management",version:"1.0.0"},{key:"users.teams",version:"1.0.0"},{key:"provider.mcp.teams",version:"1.0.0"},{key:"provider.webhook.teams",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultTeamId:{type:"string",description:"Optional default Microsoft Teams team ID for operations."},defaultChannelId:{type:"string",description:"Optional default channel ID for sending messages."},tenantId:{type:"string",description:"Optional Azure AD tenant ID (for single-tenant apps)."},apiBaseUrl:{type:"string",description:"Optional Graph API base URL (for GCC/GCC High instances)."}}},example:{defaultTeamId:"team-id-123",defaultChannelId:"channel-id-456"}},secretSchema:{schema:{type:"object",required:["accessToken"],properties:{accessToken:{type:"string",description:"Microsoft Graph API access token for Teams operations."},refreshToken:{type:"string",description:"Optional refresh token for delegated auth flows."},clientId:{type:"string",description:"Azure AD application (client) ID for app-only auth."},clientSecret:{type:"string",description:"Azure AD application secret for app-only auth."},tenantId:{type:"string",description:"Azure AD tenant ID for app-only auth flows."},webhookSecret:{type:"string",description:"Secret used to verify inbound Microsoft Graph webhook notifications."}}},example:{accessToken:"eyJhbGciOi..."}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://learn.microsoft.com/en-us/graph/api/resources/teams-api-overview",constraints:{rateLimit:{rpm:300}},byokSetup:{setupInstructions:"Register an application in Azure AD, grant Microsoft Graph API permissions for Teams, then configure the access token and webhook secret.",requiredScopes:["ChannelMessage.Send","Channel.ReadBasic.All","Team.ReadBasic.All"],keyRotationSupported:!0,quotaTrackingSupported:!1}});function ke(e){return e.register(Sr)}import{StabilityEnum as wr}from"@lssm/lib.contracts-spec/ownership";var xr=t({meta:{key:"messaging.telegram",version:"1.0.0",category:"messaging",title:"Telegram Bot API",description:"Telegram messaging integration for inbound webhook updates, threaded topic messages, and outbound bot replies.",domain:"communications",owners:["platform.messaging"],tags:["messaging","telegram"],stability:wr.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.telegram.org"},{type:"webhook",inbound:{signatureHeader:"x-telegram-bot-api-secret-token",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",capabilities:{provides:[{key:"messaging.inbound",version:"1.0.0"},{key:"messaging.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultChatId:{type:"string",description:"Optional default Telegram chat ID used for outbound sends when no chat target is provided."},apiBaseUrl:{type:"string",description:"Optional Telegram Bot API base URL override for proxies or self-hosted gateways."}}},example:{defaultChatId:"-1001234567890",apiBaseUrl:"https://api.telegram.org"}},secretSchema:{schema:{type:"object",required:["botToken","secretToken"],properties:{botToken:{type:"string",description:"Telegram bot token used for sendMessage and webhook registration."},secretToken:{type:"string",description:"Webhook secret token expected in the X-Telegram-Bot-Api-Secret-Token header."}}},example:{botToken:"123456789:AA***",secretToken:"contractspec-telegram-webhook"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://core.telegram.org/bots/api",constraints:{rateLimit:{rpm:180}},byokSetup:{setupInstructions:"Create a Telegram bot with BotFather, set a webhook with a secret token, then provide the bot token and secret token.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function be(e){return e.register(xr)}import{StabilityEnum as Ar}from"@lssm/lib.contracts-spec/ownership";var Mr=t({meta:{key:"messaging.whatsapp.meta",version:"1.0.0",category:"messaging",title:"WhatsApp Cloud API (Meta)",description:"Meta WhatsApp Cloud API integration for inbound message processing and outbound replies.",domain:"communications",owners:["platform.messaging"],tags:["messaging","whatsapp","meta"],stability:Ar.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://graph.facebook.com"},{type:"webhook",inbound:{signatureHeader:"x-hub-signature-256",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer"},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"x-hub-signature-256"}],capabilities:{provides:[{key:"messaging.inbound",version:"1.0.0"},{key:"messaging.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["phoneNumberId"],properties:{phoneNumberId:{type:"string",description:"WhatsApp business phone number ID used for sends."},apiVersion:{type:"string",description:"Optional Graph API version (e.g. v22.0)."}}},example:{phoneNumberId:"1234567890",apiVersion:"v22.0"}},secretSchema:{schema:{type:"object",required:["accessToken","appSecret","verifyToken"],properties:{accessToken:{type:"string",description:"Meta access token for WhatsApp Cloud API calls."},appSecret:{type:"string",description:"Meta app secret used for signature verification."},verifyToken:{type:"string",description:"Webhook verify token used during challenge handshake."}}},example:{accessToken:"EAAG***",appSecret:"***",verifyToken:"contractspec-verify"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://developers.facebook.com/docs/whatsapp",constraints:{rateLimit:{rpm:120}},byokSetup:{setupInstructions:"Create a Meta app with WhatsApp product enabled, add a business phone number, and provide API and webhook credentials.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function ve(e){return e.register(Mr)}import{StabilityEnum as Tr}from"@lssm/lib.contracts-spec/ownership";var Pr=t({meta:{key:"messaging.whatsapp.twilio",version:"1.0.0",category:"messaging",title:"WhatsApp via Twilio",description:"Twilio-powered WhatsApp integration for inbound webhooks and outbound conversational messaging.",domain:"communications",owners:["platform.messaging"],tags:["messaging","whatsapp","twilio"],stability:Tr.Beta},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.twilio.com"},{type:"webhook",inbound:{signatureHeader:"x-twilio-signature",signingAlgorithm:"hmac-sha1"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"basic"}],capabilities:{provides:[{key:"messaging.inbound",version:"1.0.0"},{key:"messaging.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{fromNumber:{type:"string",description:"Default WhatsApp-enabled Twilio sender number (e.g. whatsapp:+15551234567)."}}},example:{fromNumber:"whatsapp:+15551234567"}},secretSchema:{schema:{type:"object",required:["accountSid","authToken"],properties:{accountSid:{type:"string",description:"Twilio account SID."},authToken:{type:"string",description:"Twilio auth token."}}},example:{accountSid:"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",authToken:"***"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://www.twilio.com/docs/whatsapp",constraints:{rateLimit:{rpm:200}},byokSetup:{setupInstructions:"Create a Twilio project with WhatsApp sender provisioning, then provide account SID/auth token and sender number.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function Ie(e){return e.register(Pr)}import{StabilityEnum as Rr}from"@lssm/lib.contracts-spec/ownership";var Cr=t({meta:{key:"ai-llm.mistral",version:"1.0.0",category:"ai-llm",title:"Mistral Large Language Model",description:"Mistral integration providing chat completions and embedding generation.",domain:"ai",owners:["platform.ai"],tags:["ai","llm","embeddings"],stability:Rr.Experimental},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.mistral.ai"},{type:"sdk",packageName:"@mistralai/mistralai"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Bearer "}],capabilities:{provides:[{key:"ai.chat",version:"1.0.0"},{key:"ai.embeddings",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"Default chat completion model (e.g., mistral-large-latest)."},embeddingModel:{type:"string",description:"Embedding model identifier."}}},example:{model:"mistral-large-latest",embeddingModel:"mistral-embed"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Mistral API key with access to chat and embeddings endpoints."}}},example:{apiKey:"mistral-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.mistral.ai/platform/endpoints",constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:"Generate an API key within the Mistral console and ensure the selected models are enabled for the account.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function Se(e){return e.register(Cr)}import{StabilityEnum as Ur}from"@lssm/lib.contracts-spec/ownership";var Or=t({meta:{key:"ai-voice-conv.mistral",version:"1.0.0",category:"ai-voice-conversational",title:"Mistral Conversational Voice",description:"Mistral conversational voice integration using conversation sessions and speech models for bidirectional interactions.",domain:"ai",owners:["platform.ai"],tags:["voice","conversational","mistral","agents","sessions"],stability:Ur.Experimental},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.mistral.ai"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Bearer "}],capabilities:{provides:[{key:"ai.voice.conversational",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"Mistral model used for response generation in conversational sessions."},defaultVoice:{type:"string",description:"Default voice profile for agent responses."},turnDetection:{type:"string",enum:["server_vad","push_to_talk"],description:"Turn detection strategy used during live conversations."},maxSessionDurationSeconds:{type:"number",description:"Maximum allowed conversational session duration."}}},example:{model:"mistral-medium-latest",defaultVoice:"default",turnDetection:"server_vad",maxSessionDurationSeconds:600}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Mistral API key with access to conversational and agent APIs."}}},example:{apiKey:"mistral-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.mistral.ai/agents/agents",byokSetup:{setupInstructions:"Create a Mistral API key, enable conversation-capable models for your account, and configure default turn detection settings.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function we(e){return e.register(Or)}import{StabilityEnum as Er}from"@lssm/lib.contracts-spec/ownership";var qr=t({meta:{key:"ai-voice-stt.mistral",version:"1.0.0",category:"ai-voice-stt",title:"Mistral Speech-to-Text",description:"Mistral audio transcription integration for batch and streaming speech-to-text use cases.",domain:"ai",owners:["platform.ai"],tags:["voice","stt","transcription","mistral","voxtral"],stability:Er.Experimental},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.mistral.ai"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Bearer "}],capabilities:{provides:[{key:"ai.voice.stt",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"Mistral transcription model identifier (e.g. voxtral-mini-latest)."},language:{type:"string",description:"Default language code for transcription (e.g. en)."},diarize:{type:"boolean",description:"Enable speaker diarization when supported by the model."},wordTimestamps:{type:"boolean",description:"Include word-level timestamp metadata when available."}}},example:{model:"voxtral-mini-latest",language:"en",diarize:!0,wordTimestamps:!0}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Mistral API key with access to audio transcription endpoints."}}},example:{apiKey:"mistral-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.mistral.ai/api/#tag/audio",byokSetup:{setupInstructions:"Generate a Mistral API key and ensure the project has access to Voxtral or another transcription-capable model.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function xe(e){return e.register(qr)}var jr=c({key:"health.myfitnesspal",title:"MyFitnessPal",description:"MyFitnessPal nutrition and activity integration through official, aggregator, or opt-in unofficial connectors.",docsUrl:"https://www.myfitnesspal.com/",tags:["myfitnesspal","nutrition","unofficial"],capabilities:[{key:"health.activities.read",version:"1.0.0"},{key:"health.nutrition.read",version:"1.0.0"}],defaultTransport:"aggregator-api"});function Ae(e){return e.register(jr)}import{StabilityEnum as Dr}from"@lssm/lib.contracts-spec/ownership";var Fr=t({meta:{key:"project-management.notion",version:"2.0.0",category:"project-management",title:"Notion",description:"Full-featured Notion integration with CRUD operations for pages, databases, and blocks, OAuth2 authentication, MCP server support, and real-time synchronization.",domain:"productivity",owners:["@platform.integrations"],tags:["project-management","notion","oauth2","mcp","webhooks"],stability:Dr.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.notion.com",apiVersionHeader:"Notion-Version"},{type:"webhook",inbound:{signatureHeader:"x-notion-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer"},{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://api.notion.com/v1/oauth/authorize",tokenUrl:"https://api.notion.com/v1/oauth/token",revocationUrl:"https://api.notion.com/v1/oauth/revoke",scopes:["read:user","read:pages","read:databases","write:pages","write:databases"],pkce:!0}],versionPolicy:{currentVersion:"2022-06-28",supportedVersions:[{version:"2022-06-28",status:"stable"}],versionHeader:"Notion-Version"},capabilities:{provides:[{key:"project-management.work-items",version:"1.0.0"},{key:"knowledge.ingestion.notion",version:"1.0.0"},{key:"provider.delta.notion",version:"1.0.0"},{key:"provider.mcp.notion",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{databaseId:{type:"string",description:"Optional Notion database ID to store tasks."},summaryParentPageId:{type:"string",description:"Optional parent page ID for summary pages."},titleProperty:{type:"string",description:'Database title property name (defaults to "Name").'},statusProperty:{type:"string",description:"Database status/select property name."},priorityProperty:{type:"string",description:"Database priority/select property name."},tagsProperty:{type:"string",description:"Database multi-select tags property name."},dueDateProperty:{type:"string",description:"Database date property name for due dates."},descriptionProperty:{type:"string",description:"Database rich-text property for descriptions."}}},example:{databaseId:"xxxxxxxxxxxxxxxx",summaryParentPageId:"yyyyyyyyyyyyyyyy",titleProperty:"Name",statusProperty:"Status"}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string",description:"Notion integration secret token (for BYOK mode)."},oauth2AccessToken:{type:"string",description:"OAuth2 access token (for managed mode)."},oauth2RefreshToken:{type:"string",description:"OAuth2 refresh token."}}},example:{apiKey:"secret_notion_token",oauth2AccessToken:"ntn_abc123",oauth2RefreshToken:"ntn_refresh_xyz789"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.notion.com",constraints:{},byokSetup:{setupInstructions:"For API key: Create a Notion internal integration, share the target database/page with it, and store the secret token. For OAuth2: Configure OAuth application in Notion and complete authorization flow.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function Me(e){return e.register(Fr)}import{StabilityEnum as Kr}from"@lssm/lib.contracts-spec/ownership";var Gr=t({meta:{key:"ai-image.openai",version:"1.0.0",category:"ai-image",title:"OpenAI Image Generation",description:"OpenAI integration for AI image generation using DALL-E and gpt-image models.",domain:"ai",owners:["platform.ai"],tags:["image","generation","dall-e","gpt-image"],stability:Kr.Experimental},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.openai.com"},{type:"sdk",packageName:"openai"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Bearer "}],capabilities:{provides:[{key:"ai.image.generation",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"OpenAI image model identifier (e.g. dall-e-3, gpt-image-1)."},defaultSize:{type:"string",enum:["1024x1024","1024x1792","1792x1024"]},defaultQuality:{type:"string",enum:["standard","hd"]}}},example:{model:"dall-e-3",defaultSize:"1024x1024",defaultQuality:"standard"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"OpenAI API key with image generation permissions."}}},example:{apiKey:"sk-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://platform.openai.com/docs/guides/images",constraints:{rateLimit:{rpm:50}},byokSetup:{setupInstructions:"Create an OpenAI API key with image generation access enabled.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function Te(e){return e.register(Gr)}import{StabilityEnum as Lr}from"@lssm/lib.contracts-spec/ownership";var _r=t({meta:{key:"ai-voice-conv.openai",version:"1.0.0",category:"ai-voice-conversational",title:"OpenAI Realtime Voice",description:"OpenAI Realtime API integration for bidirectional conversational voice with GPT models.",domain:"ai",owners:["platform.ai"],tags:["voice","conversational","realtime","openai"],stability:Lr.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed OpenAI Realtime credentials are not declared because realtime voice access depends on tenant-owned OpenAI API keys and project quotas.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!0}),transports:[{type:"rest",baseUrl:"https://api.openai.com"},{type:"sdk",packageName:"openai"}],preferredTransport:"sdk",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Bearer "}],capabilities:{provides:[{key:"ai.voice.conversational",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"OpenAI model for realtime conversations (e.g. gpt-4o-realtime-preview)."},defaultVoice:{type:"string",description:"Default voice for agent responses (e.g. alloy, echo, shimmer)."},turnDetection:{type:"string",enum:["server_vad","push_to_talk"],description:"Turn detection strategy."},maxSessionDurationSeconds:{type:"number",description:"Maximum session duration in seconds."}}},example:{model:"gpt-4o-realtime-preview",defaultVoice:"alloy",turnDetection:"server_vad",maxSessionDurationSeconds:600}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"OpenAI API key with realtime API access."}}},example:{apiKey:"sk-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://platform.openai.com/docs/guides/realtime",byokSetup:{setupInstructions:"Create an OpenAI API key with Realtime API access enabled and store it in your secret provider.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function Pe(e){return e.register(_r)}import{StabilityEnum as Hr}from"@lssm/lib.contracts-spec/ownership";var zr=c({key:"health.openwearables",title:"Open Wearables",description:"Unified wearable and health data aggregation with API and MCP transports.",docsUrl:"https://www.openwearables.io/",tags:["openwearables","aggregator","mcp"],stability:Hr.Beta,capabilities:[{key:"health.activities.read",version:"1.0.0"},{key:"health.workouts.read",version:"1.0.0"},{key:"health.sleep.read",version:"1.0.0"},{key:"health.biometrics.read",version:"1.0.0"},{key:"health.nutrition.read",version:"1.0.0"},{key:"health.webhooks",version:"1.0.0"}],defaultTransport:"aggregator-api",byokSetupInstructions:"Create an Open Wearables account, generate API/MCP credentials, and connect desired upstream providers."});function Re(e){return e.register(zr)}var Nr=c({key:"health.oura",title:"Oura",description:"Oura integration for sleep, activity, readiness, and biometrics data.",docsUrl:"https://cloud.ouraring.com/docs/",tags:["oura","official-api"],byokScopes:["daily","personal","workout","sleep"]});function Ce(e){return e.register(Nr)}var Wr=s({key:"web-access.oxylabs",title:"Oxylabs Web Access",description:"Oxylabs Web Scraper API and governed residential proxy execution.",tags:["scraping","search","residential-proxy"],transports:[{type:"rest",baseUrl:"https://realtime.oxylabs.io/v1"},{type:"proxy",protocols:["http","https","socks5","socks5h"],host:"pr.oxylabs.io",ports:{http:7777,https:7777,socks5:7777,socks5h:7777},remoteDns:!0,geoTargeting:!0,stickySessions:!0}],preferredTransport:"rest",auth:[{type:"basic",usernameField:"username",passwordField:"password"}],secretFields:["username","password"],capabilities:["web.search","web.fetch","web.proxy"],docsUrl:"https://developers.oxylabs.io/scraper-apis/web-scraper-api"});function Ue(e){return e.register(Wr)}import{StabilityEnum as Br}from"@lssm/lib.contracts-spec/ownership";var Vr=t({meta:{key:"payments.paypal",version:"1.0.0",category:"payments",title:"PayPal Payments",description:"PayPal integration for checkout, payments, subscriptions, payouts, marketplace, disputes, and webhooks.",domain:"payments",owners:["platform.payments"],tags:["payments","checkout","subscriptions","payouts","marketplace"],stability:Br.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed PayPal credentials are not declared because API access depends on a tenant-owned PayPal app and webhook configuration.",secretFields:[{key:"clientId",required:!0},{key:"clientSecret",required:!0},{key:"webhookId",required:!1},{key:"partnerId",required:!1},{key:"partnerAttributionId",required:!1}],rotationSupported:!0}),transports:[{type:"rest",baseUrl:"https://api-m.paypal.com"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"client_credentials",tokenUrl:"https://api-m.paypal.com/v1/oauth2/token",scopes:[]}],versionPolicy:{currentVersion:"v2",supportedVersions:[{version:"v2",status:"stable"}]},capabilities:{provides:[{key:"payments.psp",version:"1.0.0"},{key:"payments.customers",version:"1.0.0"},{key:"payments.payment-methods",version:"1.0.0"},{key:"payments.checkout",version:"1.0.0"},{key:"payments.subscriptions",version:"1.0.0"},{key:"payments.invoices",version:"1.0.0"},{key:"payments.disputes",version:"1.0.0"},{key:"payments.payouts",version:"1.0.0"},{key:"payments.marketplace",version:"1.0.0"},{key:"payments.webhooks",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{environment:{type:"string",enum:["sandbox","live"],description:"PayPal API environment."},merchantId:{type:"string",description:"Optional PayPal merchant account identifier."},partnerId:{type:"string",description:"Optional PayPal partner merchant identifier."},partnerAttributionId:{type:"string",description:"Optional PayPal BN attribution identifier."}},required:["environment"]},example:{environment:"sandbox",merchantId:"merchant_123",partnerId:"partner_123",partnerAttributionId:"PARTNER_BN_CODE"}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string",description:"PayPal app client ID."},clientSecret:{type:"string",description:"PayPal app client secret."},webhookId:{type:"string",description:"Webhook ID used for signature verification."},partnerId:{type:"string",description:"Optional PayPal partner merchant identifier."},partnerAttributionId:{type:"string",description:"Optional PayPal BN attribution identifier."}}},example:{clientId:"paypal-client-id",clientSecret:"***",webhookId:"WH-***"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://developer.paypal.com/api/rest/",byokSetup:{setupInstructions:"Create a PayPal REST app, store its client credentials, and configure a webhook when inbound events are required.",requiredScopes:[],keyRotationSupported:!0,quotaTrackingSupported:!1}});function Oe(e){return e.register(Vr)}var $r=c({key:"health.peloton",title:"Peloton",description:"Peloton integration for workout history and activity metrics using official, aggregator, or opt-in unofficial connectors.",docsUrl:"https://developers.onepeloton.com/",tags:["peloton","workouts","unofficial"],capabilities:[{key:"health.activities.read",version:"1.0.0"},{key:"health.workouts.read",version:"1.0.0"}],defaultTransport:"aggregator-api"});function Ee(e){return e.register($r)}import{StabilityEnum as Yr}from"@lssm/lib.contracts-spec/ownership";var Qr=t({meta:{key:"analytics.posthog",version:"1.1.0",category:"analytics",title:"PostHog",description:"PostHog integration for product analytics, feature flags, HogQL queries, and LLM analytics with evaluations.",domain:"analytics",owners:["@platform.integrations"],tags:["analytics","posthog","llm","ai"],stability:Yr.Beta},supportedModes:["managed","byok"],transports:[{type:"rest"},{type:"mcp",transport:"http"},{type:"sdk",packageName:"posthog-node"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"}],capabilities:{provides:[{key:"analytics.events",version:"1.0.0"},{key:"analytics.feature-flags",version:"1.0.0"},{key:"analytics.query",version:"1.0.0"},{key:"analytics.events.read",version:"1.0.0"},{key:"analytics.persons",version:"1.0.0"},{key:"analytics.insights",version:"1.0.0"},{key:"analytics.cohorts",version:"1.0.0"},{key:"analytics.annotations",version:"1.0.0"},{key:"analytics.llm-tracing",version:"1.0.0"},{key:"analytics.llm-evaluations",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{host:{type:"string",description:"PostHog host (e.g., https://app.posthog.com or self-hosted URL)."},projectId:{type:"string",description:"PostHog project ID for API queries."},mcpUrl:{type:"string",description:"Optional MCP endpoint URL for PostHog tools."}}},example:{host:"https://app.posthog.com",projectId:"12345"}},secretSchema:{schema:{type:"object",required:["personalApiKey"],properties:{personalApiKey:{type:"string",description:"PostHog personal API key (required for API reads/writes)."},projectApiKey:{type:"string",description:"PostHog project API key (required for capture/ingest events)."}}},example:{personalApiKey:"phx_personal_api_key",projectApiKey:"phc_project_api_key"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://posthog.com/docs",byokSetup:{setupInstructions:"Generate a PostHog personal API key for read/write operations and a project API key for event capture.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function qe(e){return e.register(Qr)}import{StabilityEnum as Jr}from"@lssm/lib.contracts-spec/ownership";var Xr=t({meta:{key:"email.postmark",version:"1.0.0",category:"email",title:"Postmark Transactional Email",description:"Postmark integration for transactional email delivery.",domain:"communications",owners:["platform.messaging"],tags:["email","transactional"],stability:Jr.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.postmarkapp.com"},{type:"webhook",inbound:{signatureHeader:"x-postmark-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"header",headerName:"X-Postmark-Server-Token"}],capabilities:{provides:[{key:"email.transactional",version:"1.0.0"}],requires:[{key:"platform.webhooks",optional:!0,reason:"Optional for inbound bounce handling"}]},configSchema:{schema:{type:"object",properties:{messageStream:{type:"string",description:"Optional message stream identifier (e.g., transactional)."},fromEmail:{type:"string",description:"Default From address used for outbound messages."}}},example:{messageStream:"outbound",fromEmail:"notifications@example.com"}},secretSchema:{schema:{type:"object",required:["serverToken"],properties:{serverToken:{type:"string",description:"Server token for the Postmark account."}}},example:{serverToken:"server-***"}},healthCheck:{method:"ping",timeoutMs:3000},docsUrl:"https://postmarkapp.com/developer",constraints:{rateLimit:{rpm:500}},byokSetup:{setupInstructions:"Create a Postmark server token with outbound send permissions and configure allowed from addresses.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function je(e){return e.register(Xr)}import{StabilityEnum as Zr}from"@lssm/lib.contracts-spec/ownership";var eo=t({meta:{key:"openbanking.powens",version:"1.0.0",category:"open-banking",title:"Powens Open Banking (Read)",description:"Read-only Open Banking integration powered by Powens, exposing accounts, transactions, and balances.",domain:"finance",owners:["platform.finance"],tags:["open-banking","powens","finance"],stability:Zr.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Powens credentials are not declared because open-banking access requires tenant-owned regulated OAuth project credentials and consent boundaries.",configFields:[{key:"environment",required:!0}],secretFields:[{key:"clientId",required:!0},{key:"clientSecret",required:!0},{key:"apiKey"},{key:"webhookSecret"}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://api.powens.com"},{type:"webhook",inbound:{signatureHeader:"x-powens-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://auth.powens.com/authorize",tokenUrl:"https://auth.powens.com/token",scopes:["accounts:read","transactions:read","balances:read"]}],capabilities:{provides:[{key:"openbanking.accounts.read",version:"1.0.0"},{key:"openbanking.transactions.read",version:"1.0.0"},{key:"openbanking.balances.read",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["environment"],properties:{environment:{type:"string",enum:["sandbox","production"],description:"Powens environment to target. Sandbox uses Powens test API base URL, production uses live endpoints."},baseUrl:{type:"string",description:"Optional override for the Powens API base URL. Defaults to Powens environment defaults."},region:{type:"string",description:"Optional Powens region identifier when targeting a specific data residency cluster."},pollingIntervalMs:{type:"number",description:"Optional custom polling interval in milliseconds for background sync jobs (defaults to platform standard)."}}},example:{environment:"sandbox",baseUrl:"https://api-sandbox.powens.com/v2",region:"eu-west-1",pollingIntervalMs:300000}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string",description:"Powens OAuth client identifier obtained from the Powens Console (BYOK project)."},clientSecret:{type:"string",description:"Powens OAuth client secret used to exchange for access tokens."},apiKey:{type:"string",description:"Optional Powens API key (if the tenant project exposes a dedicated API token)."},webhookSecret:{type:"string",description:"Optional webhook signing secret used to verify Powens webhook payloads."}}},example:{clientId:"powens-client-id",clientSecret:"powens-client-secret",apiKey:"powens-api-key",webhookSecret:"powens-webhook-secret"}},healthCheck:{method:"ping",timeoutMs:8000},docsUrl:"https://docs.powens.com/",constraints:{rateLimit:{rph:1e4,rpm:600}},byokSetup:{setupInstructions:"Create a Powens BYOK project, generate OAuth credentials, and optionally configure webhook delivery for account/transaction updates.",requiredScopes:["accounts:read","transactions:read","balances:read"],keyRotationSupported:!1,quotaTrackingSupported:!1}});function De(e){return e.register(eo)}import{StabilityEnum as to}from"@lssm/lib.contracts-spec/ownership";var ro=t({meta:{key:"vectordb.qdrant",version:"1.0.0",category:"vector-db",title:"Qdrant Vector Database",description:"Qdrant integration for vector search and embeddings storage.",domain:"ai",owners:["platform.ai"],tags:["vector-db","search"],stability:to.Experimental},supportedModes:["managed","byok"],transports:[{type:"rest"},{type:"sdk",packageName:"@qdrant/js-client-rest"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"bearer"}],capabilities:{provides:[{key:"vector-db.search",version:"1.0.0"},{key:"vector-db.storage",version:"1.0.0"}],requires:[{key:"ai.embeddings",optional:!0,reason:"Required if vectors are generated via hosted embedding services"}]},configSchema:{schema:{type:"object",properties:{apiUrl:{type:"string",description:"Base URL for the Qdrant instance (e.g., https://qdrant.example.com)."},collectionPrefix:{type:"string",description:"Prefix applied to all collection names for this tenant."}}},example:{apiUrl:"https://qdrant.example.com",collectionPrefix:"tenant_"}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string",description:"API key or token when authentication is enabled."}}},example:{apiKey:"qdrant-api-key"}},healthCheck:{method:"ping",timeoutMs:4000},docsUrl:"https://qdrant.tech/documentation/quick-start/",constraints:{quotas:{collections:100,pointsPerCollection:1e6}},byokSetup:{setupInstructions:"Provide the HTTPS endpoint of your Qdrant cluster and generate an API key with read/write access to the collections that will be managed.",keyRotationSupported:!0,quotaTrackingSupported:!0}});function Fe(e){return e.register(ro)}var oo=s({key:"web-access.reworkd",title:"Reworkd Web Access",description:"Reworkd REST access to materialized scraping-group outputs.",tags:["scraping","datasets"],transports:[{type:"rest",baseUrl:"https://api.reworkd.dev/v1"}],preferredTransport:"rest",auth:[{type:"bearer",tokenField:"apiKey"}],secretFields:["apiKey"],capabilities:["web.dataset.read"],docsUrl:"https://docs.reworkd.ai/api-reference/public/get-outputs-for-a-scraping-group"});function Ke(e){return e.register(oo)}var io=s({key:"web-access.serper",title:"Serper Google Search API",description:"Serper REST access for Google Search, Images, News, Maps, Places, Videos, Shopping, Scholar, Patents, and Autocomplete.",tags:["search","serp","google"],transports:[{type:"rest",baseUrl:"https://google.serper.dev"}],preferredTransport:"rest",auth:[{type:"header",headerName:"X-API-KEY"}],secretFields:["apiKey"],capabilities:["web.search"],docsUrl:"https://serper.dev/"});function Ge(e){return e.register(io)}import{StabilityEnum as ao}from"@lssm/lib.contracts-spec/ownership";var Le="SILLAGE_VENDOR_DOCS_REQUIRED",no=t({meta:{key:"crm.sillage",version:"1.0.0",category:"crm",title:"Sillage GTM Intelligence",description:"Sillage catalog metadata for GTM signals, Slack/CRM workflow, account intelligence, and power-map enrichment. Executable operations are disabled until official vendor API docs exist.",domain:"sales-intelligence",owners:["platform.integrations"],tags:["sales-intelligence","gtm-signals","buying-signals","sillage","vendor-docs-required"],stability:ao.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Sillage public API, MCP, SDK, webhook, and auth contracts are not documented; Managed or live calls require vendor-confirmed docs.",rotationSupported:!1}),transports:[],capabilities:{provides:[{key:"sales-intelligence.gtm-signal-feed",version:"1.0.0"},{key:"sales-intelligence.account-power-map",version:"1.0.0"},{key:"sales-intelligence.crm-slack-bridge-metadata",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{requiresVendorDocs:{type:"boolean",const:!0},diagnosticCode:{type:"string",const:Le}}},example:{requiresVendorDocs:!0,diagnosticCode:Le}},secretSchema:{schema:{type:"object",properties:{}},example:{}},docsUrl:"https://getsillage.com/",byokSetup:{setupInstructions:"Do not configure executable Sillage calls until official API, MCP, SDK, webhook, and auth documentation is provided.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function _e(e){return e.register(no)}import{StabilityEnum as so}from"@lssm/lib.contracts-spec/ownership";var po=t({meta:{key:"ai-voice.slng",version:"1.0.0",category:"ai-voice-conversational",title:"SLNG Global Voice AI Infrastructure",description:"SLNG integration for unified TTS, STT, voice-agent, HTTP, and WebSocket voice infrastructure APIs.",domain:"ai",owners:["platform.ai"],tags:["voice","tts","stt","voice-agents","websocket"],stability:so.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed SLNG credentials are not declared because public SLNG access is API-key based and no ContractSpec-managed SLNG tenant account or OAuth app surface is provided.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://api.slng.ai"},{type:"websocket",url:"wss://api.slng.ai",protocol:"mixed"}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer",tokenField:"apiKey"}],capabilities:{provides:[{key:"ai.voice.tts",version:"1.0.0"},{key:"ai.voice.stt",version:"1.0.0"},{key:"ai.voice.conversational",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},agentsBaseUrl:{type:"string"},defaultTtsRoute:{type:"string"},defaultSttRoute:{type:"string"},timeoutMs:{type:"number"}}},example:{baseUrl:"https://api.slng.ai",agentsBaseUrl:"https://api.agents.slng.ai",defaultTtsRoute:"/v1/tts/slng/deepgram/aura:2",defaultSttRoute:"/v1/stt/slng/openai/whisper:large-v3",timeoutMs:15000}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"SLNG API key."}}},example:{apiKey:"slng_***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.slng.ai/",byokSetup:{setupInstructions:"Create an SLNG API key in the SLNG app and store it in the tenant secret provider. Public docs expose API-key HTTP/WebSocket access; no official MCP or OAuth app surface is documented.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function He(e){return e.register(po)}import{StabilityEnum as co}from"@lssm/lib.contracts-spec/ownership";function I(e){return t({meta:{key:`social-network.${e.key}`,version:"1.0.0",title:e.title,description:`Official ${e.title} connected-account read integration.`,category:"custom",domain:"social-network",owners:["platform.integrations"],tags:["social-network",e.key,"connected-account"],stability:co.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed mode is unavailable because the integrator must own the vendor application approval and OAuth credentials.",secretFields:[{key:"clientId",required:!0},{key:"clientSecret",required:!0}],rotationSupported:!0}),transports:[{type:"rest",baseUrl:e.baseUrl},{type:"webhook"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:e.authorizationUrl,tokenUrl:e.tokenUrl,scopes:[...e.scopes],pkce:e.key==="youtube"||e.key==="x"}],versionPolicy:{currentVersion:e.version,supportedVersions:[{version:e.version,status:"stable"}]},capabilities:{provides:["profile.get","content.get","content.list","content.sync","creator.track","content.track","analytics.query","webhook.event.normalize"].map((r)=>({key:`${e.key}.${r}`,version:"1.0.0"}))},configSchema:{schema:{type:"object",properties:{apiVersion:{type:"string"}}}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string"},clientSecret:{type:"string"}}},example:{clientId:"***",clientSecret:"***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:e.baseUrl,byokSetup:{setupInstructions:"Register an official provider application and store credentials through the integration secret runtime.",requiredScopes:[...e.scopes],keyRotationSupported:!0,quotaTrackingSupported:!0}})}var lo=I({key:"youtube",title:"YouTube",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/youtube.readonly"],baseUrl:"https://www.googleapis.com/youtube/v3",version:"v3"}),go=I({key:"tiktok",title:"TikTok",authorizationUrl:"https://www.tiktok.com/v2/auth/authorize/",tokenUrl:"https://open.tiktokapis.com/v2/oauth/token/",scopes:["user.info.basic","video.list"],baseUrl:"https://open.tiktokapis.com",version:"v2"}),mo=I({key:"instagram",title:"Instagram",authorizationUrl:"https://www.instagram.com/oauth/authorize",tokenUrl:"https://api.instagram.com/oauth/access_token",scopes:["instagram_business_basic"],baseUrl:"https://graph.instagram.com",version:"graph"}),uo=I({key:"x",title:"X",authorizationUrl:"https://x.com/i/oauth2/authorize",tokenUrl:"https://api.x.com/2/oauth2/token",scopes:["tweet.read","users.read","offline.access"],baseUrl:"https://api.x.com/2",version:"v2"});function A(e){return e.register(lo).register(go).register(mo).register(uo)}function _p(e){return A(e)}var yo=c({key:"health.strava",title:"Strava",description:"Strava integration for activities, workouts, and athlete biometrics.",docsUrl:"https://developers.strava.com/",tags:["strava","official-api"],byokScopes:["read","activity:read_all"]});function ze(e){return e.register(yo)}import{StabilityEnum as ho}from"@lssm/lib.contracts-spec/ownership";var fo=t({meta:{key:"payments.stripe",version:"1.0.0",category:"payments",title:"Stripe Payments",description:"Stripe integration for payment processing, charges, and payouts.",domain:"payments",owners:["platform.payments"],tags:["payments","psp"],stability:ho.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.stripe.com",apiVersionHeader:"Stripe-Version"},{type:"webhook",inbound:{signatureHeader:"stripe-signature",signingAlgorithm:"hmac-sha256"}},{type:"sdk",packageName:"stripe",minVersion:"14.0.0"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key",headerName:"Authorization",prefix:"Bearer "},{type:"oauth2",grantType:"authorization_code",authorizationUrl:"https://connect.stripe.com/oauth/authorize",tokenUrl:"https://connect.stripe.com/oauth/token",scopes:["read_write"]},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"stripe-signature"}],versionPolicy:{currentVersion:"2026-07-29.dahlia",supportedVersions:[{version:"2026-07-29.dahlia",status:"stable"}],versionHeader:"Stripe-Version"},capabilities:{provides:[{key:"payments.psp",version:"1.0.0"},{key:"payments.customers",version:"1.0.0"},{key:"payments.payment-methods",version:"1.0.0"},{key:"payments.checkout",version:"1.0.0"},{key:"payments.subscriptions",version:"1.0.0"},{key:"payments.invoices",version:"1.0.0"},{key:"payments.disputes",version:"1.0.0"},{key:"payments.payouts",version:"1.0.0"},{key:"payments.marketplace",version:"1.0.0"},{key:"payments.webhooks",version:"1.0.0"}],requires:[{key:"platform.webhooks",optional:!0,reason:"Recommended for reliable event ingestion"}]},configSchema:{schema:{type:"object",properties:{accountId:{type:"string",description:"Connected account ID when using Stripe Connect (BYOK)."},region:{type:"string",description:"Optional Stripe region or data residency hint."}}},example:{accountId:"acct_123",region:"us-east-1"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Stripe secret API key (sk_live_... or sk_test_...)."},webhookSecret:{type:"string",description:"Signing secret for webhook verification."}}},example:{apiKey:"sk_live_***",webhookSecret:"whsec_***"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://stripe.com/docs/api",constraints:{rateLimit:{rpm:1000,rph:20000}},byokSetup:{setupInstructions:"Create a restricted Stripe API key with write access to Charges. Provide a webhook signing secret when inbound events are enabled.",requiredScopes:["charges:write","customers:read"],keyRotationSupported:!0,quotaTrackingSupported:!1}});function Ne(e){return e.register(fo)}import{StabilityEnum as ko}from"@lssm/lib.contracts-spec/ownership";var bo=t({meta:{key:"database.supabase",version:"1.0.0",category:"database",title:"Supabase Postgres",description:"Supabase Postgres integration for SQL query execution and transactional workloads.",domain:"infrastructure",owners:["platform.infrastructure"],tags:["database","postgres","supabase"],stability:ko.Beta},supportedModes:["managed","byok"],transports:[{type:"rest"},{type:"sdk",packageName:"@supabase/supabase-js"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"basic"}],capabilities:{provides:[{key:"database.sql",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{maxConnections:{type:"number",description:"Optional connection pool size when opening a Postgres client to Supabase."},sslMode:{type:"string",enum:["require","allow","prefer"],description:"TLS mode used by the Postgres client."}}},example:{maxConnections:10,sslMode:"require"}},secretSchema:{schema:{type:"object",required:["databaseUrl"],properties:{databaseUrl:{type:"string",description:"Supabase Postgres connection string (transaction or session pooler endpoint)."}}},example:{databaseUrl:"postgresql://postgres.[project-ref]:password@aws-0-region.pooler.supabase.com:6543/postgres"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://supabase.com/docs/guides/database/connecting-to-postgres",byokSetup:{setupInstructions:"Create or reuse a Supabase project and provide a Postgres connection string with permissions aligned to your workload.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function We(e){return e.register(bo)}import{StabilityEnum as vo}from"@lssm/lib.contracts-spec/ownership";var Io=t({meta:{key:"vectordb.supabase",version:"1.0.0",category:"vector-db",title:"Supabase Vector Database (pgvector)",description:"Supabase integration for embedding storage and vector similarity search using pgvector.",domain:"ai",owners:["platform.ai"],tags:["vector-db","supabase","pgvector"],stability:vo.Beta},supportedModes:["managed","byok"],transports:[{type:"rest"},{type:"sdk",packageName:"@supabase/supabase-js"}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"bearer"}],capabilities:{provides:[{key:"vector-db.search",version:"1.0.0"},{key:"vector-db.storage",version:"1.0.0"}],requires:[{key:"ai.embeddings",optional:!0,reason:"Required when vectors are generated by a hosted embedding provider."}]},configSchema:{schema:{type:"object",properties:{schema:{type:"string",description:"Schema name containing the pgvector table (default: public)."},table:{type:"string",description:"Table used to store vectors and metadata (default: contractspec_vectors)."},createTableIfMissing:{type:"boolean",description:"Automatically create pgvector extension and table when first writing vectors."},distanceMetric:{type:"string",enum:["cosine","l2","inner_product"],description:"Distance metric used for nearest-neighbor search."}}},example:{schema:"public",table:"contractspec_vectors",createTableIfMissing:!0,distanceMetric:"cosine"}},secretSchema:{schema:{type:"object",required:["databaseUrl"],properties:{databaseUrl:{type:"string",description:"Supabase Postgres connection string with privileges to read/write vector rows."}}},example:{databaseUrl:"postgresql://postgres.[project-ref]:password@aws-0-region.pooler.supabase.com:6543/postgres"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://supabase.com/docs/guides/ai/vector-columns",byokSetup:{setupInstructions:"Create or reuse a Supabase project, enable pgvector, and provide a Postgres connection string with read/write access to the target vector table.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function Be(e){return e.register(Io)}import{StabilityEnum as So}from"@lssm/lib.contracts-spec/ownership";var wo=t({meta:{key:"web-research.tavily",version:"1.0.0",category:"custom",title:"Tavily Search, Extract, Crawl, and Research",description:"Tavily integration for real-time search, extraction, crawling, mapping, and research through API, SDK, MCP, and OAuth-enabled remote MCP.",domain:"knowledge",owners:["platform.ai"],tags:["search","extract","crawl","research","mcp","oauth"],stability:So.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed Tavily credentials are not declared because Tavily API/MCP access is currently tenant-owned API-key or OAuth-token setup; ContractSpec does not provide a shared managed Tavily tenant.",secretFields:[{key:"apiKey"},{key:"mcpAccessToken"}],rotationSupported:!1}),transports:[{type:"sdk",packageName:"@tavily/core",runtime:"universal"},{type:"rest",baseUrl:"https://api.tavily.com"},{type:"mcp",transport:"http",url:"https://mcp.tavily.com/mcp/"},{type:"mcp",transport:"stdio",command:"npx",args:["-y","@tavily/mcp"]}],preferredTransport:"sdk",supportedAuthMethods:[{type:"bearer",tokenField:"apiKey"},{type:"oauth2",grantType:"authorization_code",tokenUrl:"https://mcp.tavily.com/token",authorizationUrl:"https://mcp.tavily.com/authorize",scopes:["openid","offline_access"],pkce:!0}],capabilities:{provides:[{key:"web.search",version:"1.0.0"},{key:"web.extract",version:"1.0.0"},{key:"web.crawl",version:"1.0.0"},{key:"web.research",version:"1.0.0"},{key:"provider.mcp.tavily",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{projectId:{type:"string"},baseUrl:{type:"string"},mcpUrl:{type:"string"},defaultSearchDepth:{type:"string",enum:["basic","advanced"]}}},example:{baseUrl:"https://api.tavily.com",mcpUrl:"https://mcp.tavily.com/mcp/",defaultSearchDepth:"basic"}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string",description:"Tavily API key."},mcpAccessToken:{type:"string",description:"OAuth access token for Tavily remote MCP."}}},example:{apiKey:"tvly-***",mcpAccessToken:"oauth_***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.tavily.com/",byokSetup:{setupInstructions:"Use @tavily/core for API calls when available. For MCP, connect to the remote MCP URL with OAuth discovery or API-key auth, or run @tavily/mcp locally.",requiredScopes:["openid","offline_access"],keyRotationSupported:!1,quotaTrackingSupported:!0}}),xo=s({key:"web-research.tavily",version:"1.1.0",title:"Tavily Web Access",description:"Tavily Search, Extract, Map, Crawl, Research, polling, SSE streaming, SDK, and native MCP access.",tags:["search","extract","map","crawl","research","sse","mcp"],transports:[{type:"sdk",packageName:"@tavily/core",minVersion:"0.7.7",runtime:"universal"},{type:"rest",baseUrl:"https://api.tavily.com"},{type:"sse",url:"https://api.tavily.com/research",discoveryOperationKey:"web-access.tavily.research.stream",resumeHeader:"Last-Event-ID"},{type:"mcp",transport:"http",url:"https://mcp.tavily.com/mcp/",toolPrefix:"tavily"},{type:"mcp",transport:"stdio",command:"npx",args:["-y","@tavily/mcp"],toolPrefix:"tavily"},{type:"mcp",transport:"stdio",command:"npx",args:["-y","tavily-mcp"],toolPrefix:"tavily"}],preferredTransport:"sdk",auth:[{type:"bearer",tokenField:"apiKey"},{type:"oauth2",grantType:"authorization_code",tokenUrl:"https://mcp.tavily.com/token",authorizationUrl:"https://mcp.tavily.com/authorize",scopes:["openid","offline_access"],pkce:!0}],secretFields:["apiKey","mcpAccessToken"],capabilities:["web.search","web.extract","web.map","web.crawl","web.research","provider.mcp.tavily"],docsUrl:"https://docs.tavily.com/documentation/api-reference/introduction"});function Ve(e){return e.register(wo).register(xo)}import{StabilityEnum as Ao}from"@lssm/lib.contracts-spec/ownership";var Mo=t({meta:{key:"meeting-recorder.tldv",version:"1.0.0",category:"meeting-recorder",title:"tl;dv Meeting Recorder",description:"tl;dv Public API for meeting recordings, transcripts, and webhook events.",domain:"productivity",owners:["platform.integrations"],tags:["meeting-recorder","tldv","transcripts"],stability:Ao.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed tl;dv credentials are not declared because API and webhook access depend on tenant-owned tl;dv API keys and workspace configuration.",secretFields:[{key:"apiKey",required:!0},{key:"webhookSecret"}],rotationSupported:!1}),transports:[{type:"rest"},{type:"webhook",inbound:{signatureHeader:"x-tldv-signature",signingAlgorithm:"hmac-sha256"}}],preferredTransport:"rest",supportedAuthMethods:[{type:"api-key"},{type:"webhook-signing",algorithm:"hmac-sha256",signatureHeader:"x-tldv-signature"}],capabilities:{provides:[{key:"meeting-recorder.meetings.read",version:"1.0.0"},{key:"meeting-recorder.transcripts.read",version:"1.0.0"},{key:"meeting-recorder.webhooks",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string",description:"Optional override for the tl;dv API base URL. Defaults to https://pasta.tldv.io/v1alpha1."},webhookUrl:{type:"string",description:"Webhook destination URL configured in tl;dv settings (MeetingReady/TranscriptReady)."},webhookEvents:{type:"array",items:{type:"string"},description:"Webhook triggers to enable (MeetingReady, TranscriptReady)."},webhookScope:{type:"string",description:"Webhook scope to configure (user, team, or organization)."}}},example:{baseUrl:"https://pasta.tldv.io/v1alpha1",webhookUrl:"https://example.com/webhooks/tldv",webhookEvents:["MeetingReady","TranscriptReady"],webhookScope:"team"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"tl;dv API key used in the x-api-key header for API requests."},webhookSecret:{type:"string",description:"Optional shared secret for webhook verification if configured in your environment."}}},example:{apiKey:"tldv-***",webhookSecret:"tldv-webhook-secret"}},healthCheck:{method:"ping",timeoutMs:6000},docsUrl:"https://doc.tldv.io/index.html",byokSetup:{setupInstructions:"Generate a tl;dv API key and optionally configure MeetingReady/TranscriptReady webhooks.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function $e(e){return e.register(Mo)}import{StabilityEnum as To}from"@lssm/lib.contracts-spec/ownership";var Po=t({meta:{key:"sms.twilio",version:"1.0.0",category:"sms",title:"Twilio Messaging",description:"Twilio SMS integration for transactional and notification messaging.",domain:"communications",owners:["platform.messaging"],tags:["sms","messaging"],stability:To.Stable},supportedModes:["managed","byok"],transports:[{type:"rest",baseUrl:"https://api.twilio.com"},{type:"webhook",inbound:{signatureHeader:"x-twilio-signature",signingAlgorithm:"hmac-sha1"}},{type:"sdk",packageName:"twilio",minVersion:"5.0.0"}],preferredTransport:"rest",supportedAuthMethods:[{type:"basic"}],capabilities:{provides:[{key:"sms.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{fromNumber:{type:"string",description:"Default Twilio phone number used as sender."}}},example:{fromNumber:"+15551234567"}},secretSchema:{schema:{type:"object",required:["accountSid","authToken"],properties:{accountSid:{type:"string",description:"Twilio Account SID."},authToken:{type:"string",description:"Twilio Auth Token."}}},example:{accountSid:"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",authToken:"auth-token"}},healthCheck:{method:"custom",timeoutMs:3000},docsUrl:"https://www.twilio.com/docs/sms/api",constraints:{rateLimit:{rpm:200}},byokSetup:{setupInstructions:"Provide a Twilio account SID, auth token, and verify the outbound sending numbers used by the integration.",keyRotationSupported:!0,quotaTrackingSupported:!1}});function Ye(e){return e.register(Po)}var Ro=c({key:"health.whoop",title:"Whoop",description:"Whoop integration for sleep, recovery, workouts, and physiological metrics.",docsUrl:"https://developer.whoop.com/",tags:["whoop","official-api"],byokScopes:["read:recovery","read:workout","read:sleep","read:profile"]});function Qe(e){return e.register(Ro)}function _d(){let e=new w;return M(e),ie(e),Ne(e),Oe(e),je(e),Fe(e),Be(e),We(e),Se(e),xe(e),we(e),H(e),re(e),z(e),N(e),He(e),Ve(e),j(e),ue(e),D(e),Ge(e),ge(e),L(e),Ke(e),B(e),R(e),Ue(e),q(e),F(e),Q(e),_e(e),Z(e),ee(e),te(e),qe(e),Ye(e),fe(e),ye(e),he(e),ke(e),be(e),ve(e),Ie(e),X(e),De(e),ne(e),ce(e),se(e),de(e),le(e),pe(e),ae(e),Me(e),oe(e),$e(e),V(e),W(e),G(e),Te(e),Pe(e),Re(e),Qe(e),U(e),Ce(e),ze(e),J(e),Y(e),Ae(e),_(e),Ee(e),A(e),K(e),e}function Hd(e,r){return e.filter((o)=>o.transports&&P(o.transports,r))}function zd(e,r){return e.filter((o)=>o.supportedAuthMethods&&T(o.supportedAuthMethods,r))}function Nd(e){return e.filter((r)=>r.versionPolicy!==void 0)}function Wd(e){return e.filter((r)=>r.supportedModes.includes("byok")&&r.byokSetup?.keyRotationSupported===!0)}export{_d as createDefaultIntegrationSpecRegistry,zd as filterByAuthMethod,Hd as filterByTransport,Wd as filterByokRotatable,Nd as filterVersioned};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{StabilityEnum as l}from"@lssm/lib.contracts-spec/ownership";import{SpecContractRegistry as g}from"@lssm/lib.contracts-spec/registry";var c=(e)=>`${e.key}.v${e.version}`;class d extends g{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((t)=>t.meta.category===e)}}function y(e){return c(e)}var o=(e)=>e;function a({unsupportedModeReason:e,configFields:t,secretFields:n,rotationSupported:p=!1,setupSteps:i}){let r={mode:"byok",validationStrategy:"byok-lifecycle",rotation:{supported:p}};if(t)r.configFields=t;if(n)r.secretFields=n;if(i)r.setupSteps=i;return{modes:{byok:r},exempt:!0,exemptionReason:e}}function s(e){return o({meta:{key:e.key,version:e.version??"1.0.0",category:"custom",title:e.title,description:e.description,domain:"knowledge",owners:["platform.ai"],tags:["web-access",...e.tags],stability:l.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed credentials are not shipped; tenants must supply provider-owned credentials through a SecretProvider.",secretFields:e.secretFields.map((t)=>({key:t})),rotationSupported:!1}),transports:e.transports,preferredTransport:e.preferredTransport,supportedAuthMethods:e.auth,capabilities:{provides:e.capabilities.map((t)=>({key:t,version:"1.0.0"}))},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},policyMode:{type:"string",enum:["governed","provider-pass-through","public-only"]},...e.configProperties}}},secretSchema:{schema:{type:"object",properties:Object.fromEntries(e.secretFields.map((t)=>[t,{type:"string"}]))},example:Object.fromEntries(e.secretFields.map((t)=>[t,"***"]))},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:e.docsUrl,byokSetup:{setupInstructions:"Resolve provider credentials at execution time through SecretProvider; never persist credentials in integration config.",keyRotationSupported:!1,quotaTrackingSupported:!0}})}var m=s({key:"web-access.reworkd",title:"Reworkd Web Access",description:"Reworkd REST access to materialized scraping-group outputs.",tags:["scraping","datasets"],transports:[{type:"rest",baseUrl:"https://api.reworkd.dev/v1"}],preferredTransport:"rest",auth:[{type:"bearer",tokenField:"apiKey"}],secretFields:["apiKey"],capabilities:["web.dataset.read"],docsUrl:"https://docs.reworkd.ai/api-reference/public/get-outputs-for-a-scraping-group"});function C(e){return e.register(m)}export{C as registerReworkdIntegration,m as reworkdIntegrationSpec};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{StabilityEnum as l}from"@lssm/lib.contracts-spec/ownership";import{SpecContractRegistry as g}from"@lssm/lib.contracts-spec/registry";var c=(e)=>`${e.key}.v${e.version}`;class d extends g{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((t)=>t.meta.category===e)}}function y(e){return c(e)}var i=(e)=>e;function a({unsupportedModeReason:e,configFields:t,secretFields:n,rotationSupported:p=!1,setupSteps:o}){let r={mode:"byok",validationStrategy:"byok-lifecycle",rotation:{supported:p}};if(t)r.configFields=t;if(n)r.secretFields=n;if(o)r.setupSteps=o;return{modes:{byok:r},exempt:!0,exemptionReason:e}}function s(e){return i({meta:{key:e.key,version:e.version??"1.0.0",category:"custom",title:e.title,description:e.description,domain:"knowledge",owners:["platform.ai"],tags:["web-access",...e.tags],stability:l.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed credentials are not shipped; tenants must supply provider-owned credentials through a SecretProvider.",secretFields:e.secretFields.map((t)=>({key:t})),rotationSupported:!1}),transports:e.transports,preferredTransport:e.preferredTransport,supportedAuthMethods:e.auth,capabilities:{provides:e.capabilities.map((t)=>({key:t,version:"1.0.0"}))},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},policyMode:{type:"string",enum:["governed","provider-pass-through","public-only"]},...e.configProperties}}},secretSchema:{schema:{type:"object",properties:Object.fromEntries(e.secretFields.map((t)=>[t,{type:"string"}]))},example:Object.fromEntries(e.secretFields.map((t)=>[t,"***"]))},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:e.docsUrl,byokSetup:{setupInstructions:"Resolve provider credentials at execution time through SecretProvider; never persist credentials in integration config.",keyRotationSupported:!1,quotaTrackingSupported:!0}})}var m=s({key:"web-access.serper",title:"Serper Google Search API",description:"Serper REST access for Google Search, Images, News, Maps, Places, Videos, Shopping, Scholar, Patents, and Autocomplete.",tags:["search","serp","google"],transports:[{type:"rest",baseUrl:"https://google.serper.dev"}],preferredTransport:"rest",auth:[{type:"header",headerName:"X-API-KEY"}],secretFields:["apiKey"],capabilities:["web.search"],docsUrl:"https://serper.dev/"});function k(e){return e.register(m)}export{k as registerSerperIntegration,m as serperIntegrationSpec};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IntegrationSpecRegistry } from '../spec.js';
|
|
2
|
+
export declare const sillageVendorDocsRequiredCode = "SILLAGE_VENDOR_DOCS_REQUIRED";
|
|
3
|
+
export declare const sillageIntegrationSpec: import("..").IntegrationSpec;
|
|
4
|
+
export declare function registerSillageIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{StabilityEnum as d}from"@lssm/lib.contracts-spec/ownership";import{SpecContractRegistry as g}from"@lssm/lib.contracts-spec/registry";var c=(e)=>`${e.key}.v${e.version}`;class l extends g{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((t)=>t.meta.category===e)}}function y(e){return c(e)}var o=(e)=>e;function a({unsupportedModeReason:e,configFields:t,secretFields:i,rotationSupported:p=!1,setupSteps:r}){let n={mode:"byok",validationStrategy:"byok-lifecycle",rotation:{supported:p}};if(t)n.configFields=t;if(i)n.secretFields=i;if(r)n.setupSteps=r;return{modes:{byok:n},exempt:!0,exemptionReason:e}}var s="SILLAGE_VENDOR_DOCS_REQUIRED",m=o({meta:{key:"crm.sillage",version:"1.0.0",category:"crm",title:"Sillage GTM Intelligence",description:"Sillage catalog metadata for GTM signals, Slack/CRM workflow, account intelligence, and power-map enrichment. Executable operations are disabled until official vendor API docs exist.",domain:"sales-intelligence",owners:["platform.integrations"],tags:["sales-intelligence","gtm-signals","buying-signals","sillage","vendor-docs-required"],stability:d.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Sillage public API, MCP, SDK, webhook, and auth contracts are not documented; Managed or live calls require vendor-confirmed docs.",rotationSupported:!1}),transports:[],capabilities:{provides:[{key:"sales-intelligence.gtm-signal-feed",version:"1.0.0"},{key:"sales-intelligence.account-power-map",version:"1.0.0"},{key:"sales-intelligence.crm-slack-bridge-metadata",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{requiresVendorDocs:{type:"boolean",const:!0},diagnosticCode:{type:"string",const:s}}},example:{requiresVendorDocs:!0,diagnosticCode:s}},secretSchema:{schema:{type:"object",properties:{}},example:{}},docsUrl:"https://getsillage.com/",byokSetup:{setupInstructions:"Do not configure executable Sillage calls until official API, MCP, SDK, webhook, and auth documentation is provided.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function C(e){return e.register(m)}export{C as registerSillageIntegration,m as sillageIntegrationSpec,s as sillageVendorDocsRequiredCode};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{StabilityEnum as d}from"@lssm/lib.contracts-spec/ownership";import{SpecContractRegistry as p}from"@lssm/lib.contracts-spec/registry";var g=(e)=>`${e.key}.v${e.version}`;class c extends p{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((t)=>t.meta.category===e)}}function m(e){return g(e)}var o=(e)=>e;function a({unsupportedModeReason:e,configFields:t,secretFields:r,rotationSupported:s=!1,setupSteps:i}){let n={mode:"byok",validationStrategy:"byok-lifecycle",rotation:{supported:s}};if(t)n.configFields=t;if(r)n.secretFields=r;if(i)n.setupSteps=i;return{modes:{byok:n},exempt:!0,exemptionReason:e}}var l=o({meta:{key:"ai-voice.slng",version:"1.0.0",category:"ai-voice-conversational",title:"SLNG Global Voice AI Infrastructure",description:"SLNG integration for unified TTS, STT, voice-agent, HTTP, and WebSocket voice infrastructure APIs.",domain:"ai",owners:["platform.ai"],tags:["voice","tts","stt","voice-agents","websocket"],stability:d.Experimental},supportedModes:["byok"],credentialManifest:a({unsupportedModeReason:"Managed SLNG credentials are not declared because public SLNG access is API-key based and no ContractSpec-managed SLNG tenant account or OAuth app surface is provided.",secretFields:[{key:"apiKey",required:!0}],rotationSupported:!1}),transports:[{type:"rest",baseUrl:"https://api.slng.ai"},{type:"websocket",url:"wss://api.slng.ai",protocol:"mixed"}],preferredTransport:"rest",supportedAuthMethods:[{type:"bearer",tokenField:"apiKey"}],capabilities:{provides:[{key:"ai.voice.tts",version:"1.0.0"},{key:"ai.voice.stt",version:"1.0.0"},{key:"ai.voice.conversational",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{baseUrl:{type:"string"},agentsBaseUrl:{type:"string"},defaultTtsRoute:{type:"string"},defaultSttRoute:{type:"string"},timeoutMs:{type:"number"}}},example:{baseUrl:"https://api.slng.ai",agentsBaseUrl:"https://api.agents.slng.ai",defaultTtsRoute:"/v1/tts/slng/deepgram/aura:2",defaultSttRoute:"/v1/stt/slng/openai/whisper:large-v3",timeoutMs:15000}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"SLNG API key."}}},example:{apiKey:"slng_***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.slng.ai/",byokSetup:{setupInstructions:"Create an SLNG API key in the SLNG app and store it in the tenant secret provider. Public docs expose API-key HTTP/WebSocket access; no official MCP or OAuth app surface is documented.",keyRotationSupported:!1,quotaTrackingSupported:!1}});function M(e){return e.register(l)}export{M as registerSlngIntegration,l as slngIntegrationSpec};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface SmsMessage {
|
|
2
|
+
id: string;
|
|
3
|
+
to: string;
|
|
4
|
+
from: string;
|
|
5
|
+
body: string;
|
|
6
|
+
status: 'queued' | 'sending' | 'sent' | 'delivered' | 'undelivered' | 'failed';
|
|
7
|
+
providerMessageId?: string;
|
|
8
|
+
carrier?: string;
|
|
9
|
+
price?: number;
|
|
10
|
+
priceCurrency?: string;
|
|
11
|
+
sentAt?: Date;
|
|
12
|
+
deliveredAt?: Date;
|
|
13
|
+
errorCode?: string;
|
|
14
|
+
errorMessage?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SendSmsInput {
|
|
17
|
+
to: string;
|
|
18
|
+
from?: string;
|
|
19
|
+
body: string;
|
|
20
|
+
metadata?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
export interface SmsDeliveryStatus {
|
|
23
|
+
status: SmsMessage['status'];
|
|
24
|
+
errorCode?: string;
|
|
25
|
+
errorMessage?: string;
|
|
26
|
+
updatedAt: Date;
|
|
27
|
+
}
|
|
28
|
+
export interface SmsProvider {
|
|
29
|
+
sendSms(input: SendSmsInput): Promise<SmsMessage>;
|
|
30
|
+
getDeliveryStatus(messageId: string): Promise<SmsDeliveryStatus>;
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// @bun
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IntegrationSpecRegistry } from '../spec.js';
|
|
2
|
+
export declare const youtubeIntegrationSpec: import("..").IntegrationSpec;
|
|
3
|
+
export declare const tiktokIntegrationSpec: import("..").IntegrationSpec;
|
|
4
|
+
export declare const instagramIntegrationSpec: import("..").IntegrationSpec;
|
|
5
|
+
export declare const xIntegrationSpec: import("..").IntegrationSpec;
|
|
6
|
+
export declare function registerSocialIntegrations(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
7
|
+
/** Singular registration alias used by provider inventory discovery. */
|
|
8
|
+
export declare function registerSocialIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{StabilityEnum as u}from"@lssm/lib.contracts-spec/ownership";import{SpecContractRegistry as c}from"@lssm/lib.contracts-spec/registry";var g=(e)=>`${e.key}.v${e.version}`;class l extends c{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((t)=>t.meta.category===e)}}function b(e){return g(e)}var a=(e)=>e;function s({unsupportedModeReason:e,configFields:t,secretFields:n,rotationSupported:p=!1,setupSteps:i}){let r={mode:"byok",validationStrategy:"byok-lifecycle",rotation:{supported:p}};if(t)r.configFields=t;if(n)r.secretFields=n;if(i)r.setupSteps=i;return{modes:{byok:r},exempt:!0,exemptionReason:e}}function o(e){return a({meta:{key:`social-network.${e.key}`,version:"1.0.0",title:e.title,description:`Official ${e.title} connected-account read integration.`,category:"custom",domain:"social-network",owners:["platform.integrations"],tags:["social-network",e.key,"connected-account"],stability:u.Experimental},supportedModes:["byok"],credentialManifest:s({unsupportedModeReason:"Managed mode is unavailable because the integrator must own the vendor application approval and OAuth credentials.",secretFields:[{key:"clientId",required:!0},{key:"clientSecret",required:!0}],rotationSupported:!0}),transports:[{type:"rest",baseUrl:e.baseUrl},{type:"webhook"}],preferredTransport:"rest",supportedAuthMethods:[{type:"oauth2",grantType:"authorization_code",authorizationUrl:e.authorizationUrl,tokenUrl:e.tokenUrl,scopes:[...e.scopes],pkce:e.key==="youtube"||e.key==="x"}],versionPolicy:{currentVersion:e.version,supportedVersions:[{version:e.version,status:"stable"}]},capabilities:{provides:["profile.get","content.get","content.list","content.sync","creator.track","content.track","analytics.query","webhook.event.normalize"].map((t)=>({key:`${e.key}.${t}`,version:"1.0.0"}))},configSchema:{schema:{type:"object",properties:{apiVersion:{type:"string"}}}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string"},clientSecret:{type:"string"}}},example:{clientId:"***",clientSecret:"***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:e.baseUrl,byokSetup:{setupInstructions:"Register an official provider application and store credentials through the integration secret runtime.",requiredScopes:[...e.scopes],keyRotationSupported:!0,quotaTrackingSupported:!0}})}var m=o({key:"youtube",title:"YouTube",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/youtube.readonly"],baseUrl:"https://www.googleapis.com/youtube/v3",version:"v3"}),d=o({key:"tiktok",title:"TikTok",authorizationUrl:"https://www.tiktok.com/v2/auth/authorize/",tokenUrl:"https://open.tiktokapis.com/v2/oauth/token/",scopes:["user.info.basic","video.list"],baseUrl:"https://open.tiktokapis.com",version:"v2"}),y=o({key:"instagram",title:"Instagram",authorizationUrl:"https://www.instagram.com/oauth/authorize",tokenUrl:"https://api.instagram.com/oauth/access_token",scopes:["instagram_business_basic"],baseUrl:"https://graph.instagram.com",version:"graph"}),h=o({key:"x",title:"X",authorizationUrl:"https://x.com/i/oauth2/authorize",tokenUrl:"https://api.x.com/2/oauth2/token",scopes:["tweet.read","users.read","offline.access"],baseUrl:"https://api.x.com/2",version:"v2"});function k(e){return e.register(m).register(d).register(y).register(h)}function C(e){return k(e)}export{y as instagramIntegrationSpec,C as registerSocialIntegration,k as registerSocialIntegrations,d as tiktokIntegrationSpec,h as xIntegrationSpec,m as youtubeIntegrationSpec};
|