@contractspec/bundle.library 3.8.10 → 3.8.11
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/.turbo/turbo-build.log +606 -594
- package/CHANGELOG.md +37 -0
- package/dist/application/context-storage/index.js +1 -28
- package/dist/application/index.js +13 -2133
- package/dist/application/mcp/cliMcp.js +4 -452
- package/dist/application/mcp/common.js +1 -193
- package/dist/application/mcp/contractsMcp.js +2 -549
- package/dist/application/mcp/contractsMcpResources.js +2 -123
- package/dist/application/mcp/contractsMcpTools.js +1 -199
- package/dist/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/application/mcp/docsMcp.data.js +1 -147
- package/dist/application/mcp/docsMcp.js +6 -1039
- package/dist/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/application/mcp/docsMcp.reference.js +3 -235
- package/dist/application/mcp/docsMcp.resources.js +3 -519
- package/dist/application/mcp/docsMcp.tools.js +3 -518
- package/dist/application/mcp/index.js +13 -2106
- package/dist/application/mcp/internalMcp.js +2 -410
- package/dist/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/application/mcp/providerRankingMcp.js +1 -530
- package/dist/bundles/LibraryBundle.js +1 -138
- package/dist/bundles/index.js +1 -138
- package/dist/components/docs/DocsIndexPage.js +2 -912
- package/dist/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/components/docs/advanced/index.js +10 -1055
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/components/docs/architecture/index.js +20 -1340
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/components/docs/comparison/index.js +1 -1510
- package/dist/components/docs/docsManifest.js +1 -611
- package/dist/components/docs/docsManifest.test.d.ts +1 -0
- package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/components/docs/ecosystem/index.js +23 -569
- package/dist/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/components/docs/examples/index.js +4 -330
- package/dist/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/components/docs/generated/index.js +1 -74
- package/dist/components/docs/generated/loader.js +1 -74
- package/dist/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/components/docs/getting-started/index.js +18 -1869
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/components/docs/guides/GuideConnectInRepoPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideConnectInRepoPage.js +44 -0
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.d.ts +1 -0
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +76 -0
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +70 -0
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/components/docs/guides/index.d.ts +3 -0
- package/dist/components/docs/guides/index.js +213 -2428
- package/dist/components/docs/index.js +542 -24310
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/components/docs/integrations/index.js +52 -3100
- package/dist/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/components/docs/intent/index.js +15 -1135
- package/dist/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/components/docs/knowledge/index.js +21 -1730
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/components/docs/libraries/index.js +54 -4147
- package/dist/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/components/docs/ops/index.js +3 -202
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/components/docs/ops/ops.docs.js +10 -302
- package/dist/components/docs/product/product.docblocks.js +5 -72
- package/dist/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/components/docs/reference/index.js +4 -470
- package/dist/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/components/docs/safety/index.js +7 -1480
- package/dist/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +34 -0
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/components/docs/specs/SpecsConnectPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsConnectPage.js +8 -0
- package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/components/docs/specs/SpecsModuleBundlesPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsModuleBundlesPage.js +67 -0
- package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -325
- package/dist/components/docs/specs/index.d.ts +3 -0
- package/dist/components/docs/specs/index.js +109 -1715
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/components/docs/studio/index.js +1 -282
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/components/integrations/index.js +2 -600
- package/dist/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/components/legal/TermsTemplate.js +1 -941
- package/dist/components/legal/index.js +1 -1963
- package/dist/components/shared/FeatureGateNotice.js +1 -38
- package/dist/components/shared/index.js +1 -38
- package/dist/components/shell/WorkspaceHeader.js +1 -100
- package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/components/shell/index.js +1 -287
- package/dist/components/templates/engine/index.js +1 -39
- package/dist/components/templates/index.js +11 -965
- package/dist/components/templates/messaging/ConversationList.js +2 -83
- package/dist/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/components/templates/messaging/MessageThread.js +3 -83
- package/dist/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/components/templates/messaging/index.js +5 -269
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/components/templates/recipes/RecipeList.js +3 -245
- package/dist/components/templates/recipes/index.js +3 -248
- package/dist/components/templates/todos/FilterBar.js +1 -107
- package/dist/components/templates/todos/TaskForm.js +2 -158
- package/dist/components/templates/todos/TaskItem.js +1 -77
- package/dist/components/templates/todos/TaskList.js +5 -449
- package/dist/components/templates/todos/index.js +5 -452
- package/dist/config/contractspec-blueprint.js +1 -123
- package/dist/config/contractspec-branding.js +1 -44
- package/dist/config/contractspec-routes.js +1 -24
- package/dist/config/index.js +1 -126
- package/dist/features/contracts-registry.js +1 -178
- package/dist/features/docs/docs.contracts.js +1 -17
- package/dist/features/docs/index.js +1 -17
- package/dist/features/docs.feature.js +1 -33
- package/dist/features/index.js +1 -315
- package/dist/features/mcp.feature.js +1 -30
- package/dist/features/presentations.feature.js +1 -33
- package/dist/features/registry.js +1 -116
- package/dist/index.js +556 -28593
- package/dist/infrastructure/elysia/index.js +1 -35
- package/dist/infrastructure/elysia/logger.js +1 -35
- package/dist/infrastructure/index.js +1 -35
- package/dist/libs/email/client.js +1 -114
- package/dist/libs/email/contact.js +12 -165
- package/dist/libs/email/newsletter.js +6 -167
- package/dist/libs/email/types.js +0 -2
- package/dist/libs/email/utils.js +2 -8
- package/dist/libs/email/waitlist-application.js +28 -209
- package/dist/libs/email/waitlist.js +6 -167
- package/dist/libs/email.js +46 -363
- package/dist/libs/posthog/client.js +1 -63
- package/dist/libs/posthog/native.js +1 -23
- package/dist/libs/posthog/server.js +1 -13
- package/dist/libs/pricing-examples.js +1 -18
- package/dist/node/application/context-storage/index.js +1 -28
- package/dist/node/application/index.js +13 -2133
- package/dist/node/application/mcp/cliMcp.js +4 -452
- package/dist/node/application/mcp/common.js +1 -193
- package/dist/node/application/mcp/contractsMcp.js +2 -549
- package/dist/node/application/mcp/contractsMcpResources.js +2 -123
- package/dist/node/application/mcp/contractsMcpTools.js +1 -199
- package/dist/node/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/node/application/mcp/docsMcp.data.js +1 -147
- package/dist/node/application/mcp/docsMcp.js +6 -1039
- package/dist/node/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/node/application/mcp/docsMcp.reference.js +3 -235
- package/dist/node/application/mcp/docsMcp.resources.js +3 -519
- package/dist/node/application/mcp/docsMcp.tools.js +3 -518
- package/dist/node/application/mcp/index.js +13 -2106
- package/dist/node/application/mcp/internalMcp.js +2 -410
- package/dist/node/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/node/application/mcp/providerRankingMcp.js +1 -530
- package/dist/node/bundles/LibraryBundle.js +1 -138
- package/dist/node/bundles/index.js +1 -138
- package/dist/node/components/docs/DocsIndexPage.js +2 -912
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/node/components/docs/advanced/index.js +10 -1055
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/node/components/docs/architecture/index.js +20 -1340
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/node/components/docs/comparison/index.js +1 -1510
- package/dist/node/components/docs/docsManifest.js +1 -611
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/node/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/node/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/node/components/docs/ecosystem/index.js +23 -569
- package/dist/node/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/node/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/node/components/docs/examples/index.js +4 -330
- package/dist/node/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/node/components/docs/generated/index.js +1 -74
- package/dist/node/components/docs/generated/loader.js +1 -74
- package/dist/node/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/node/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/node/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/node/components/docs/getting-started/index.js +18 -1869
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +43 -0
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +75 -0
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +69 -0
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/node/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/node/components/docs/guides/index.js +213 -2428
- package/dist/node/components/docs/index.js +542 -24310
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/node/components/docs/integrations/index.js +52 -3100
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/node/components/docs/intent/index.js +15 -1135
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/node/components/docs/knowledge/index.js +21 -1730
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/node/components/docs/libraries/index.js +54 -4147
- package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/node/components/docs/ops/index.js +3 -202
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/node/components/docs/ops/ops.docs.js +10 -302
- package/dist/node/components/docs/product/product.docblocks.js +5 -72
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/node/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/node/components/docs/reference/index.js +4 -470
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/node/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/node/components/docs/safety/index.js +7 -1480
- package/dist/node/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +33 -0
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/node/components/docs/specs/SpecsConnectPage.js +7 -0
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +66 -0
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -325
- package/dist/node/components/docs/specs/index.js +109 -1715
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/node/components/docs/studio/index.js +1 -282
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/node/components/integrations/index.js +2 -600
- package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/node/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/node/components/legal/TermsTemplate.js +1 -941
- package/dist/node/components/legal/index.js +1 -1963
- package/dist/node/components/shared/FeatureGateNotice.js +1 -38
- package/dist/node/components/shared/index.js +1 -38
- package/dist/node/components/shell/WorkspaceHeader.js +1 -100
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/node/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/node/components/shell/index.js +1 -287
- package/dist/node/components/templates/engine/index.js +1 -39
- package/dist/node/components/templates/index.js +11 -965
- package/dist/node/components/templates/messaging/ConversationList.js +2 -83
- package/dist/node/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/node/components/templates/messaging/MessageThread.js +3 -83
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/node/components/templates/messaging/index.js +5 -269
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/node/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/node/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/node/components/templates/recipes/RecipeList.js +3 -245
- package/dist/node/components/templates/recipes/index.js +3 -248
- package/dist/node/components/templates/todos/FilterBar.js +1 -107
- package/dist/node/components/templates/todos/TaskForm.js +2 -158
- package/dist/node/components/templates/todos/TaskItem.js +1 -77
- package/dist/node/components/templates/todos/TaskList.js +5 -449
- package/dist/node/components/templates/todos/index.js +5 -452
- package/dist/node/config/contractspec-blueprint.js +1 -123
- package/dist/node/config/contractspec-branding.js +1 -44
- package/dist/node/config/contractspec-routes.js +1 -24
- package/dist/node/config/index.js +1 -126
- package/dist/node/features/contracts-registry.js +1 -178
- package/dist/node/features/docs/docs.contracts.js +1 -17
- package/dist/node/features/docs/index.js +1 -17
- package/dist/node/features/docs.feature.js +1 -33
- package/dist/node/features/index.js +1 -315
- package/dist/node/features/mcp.feature.js +1 -30
- package/dist/node/features/presentations.feature.js +1 -33
- package/dist/node/features/registry.js +1 -116
- package/dist/node/index.js +556 -28593
- package/dist/node/infrastructure/elysia/index.js +1 -35
- package/dist/node/infrastructure/elysia/logger.js +1 -35
- package/dist/node/infrastructure/index.js +1 -35
- package/dist/node/libs/email/client.js +1 -114
- package/dist/node/libs/email/contact.js +12 -165
- package/dist/node/libs/email/newsletter.js +6 -167
- package/dist/node/libs/email/types.js +0 -2
- package/dist/node/libs/email/utils.js +2 -8
- package/dist/node/libs/email/waitlist-application.js +28 -209
- package/dist/node/libs/email/waitlist.js +6 -167
- package/dist/node/libs/email.js +46 -363
- package/dist/node/libs/posthog/client.js +1 -63
- package/dist/node/libs/posthog/native.js +1 -23
- package/dist/node/libs/posthog/server.js +1 -13
- package/dist/node/libs/pricing-examples.js +1 -18
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/node/presentation/features/atoms/index.js +1 -97
- package/dist/node/presentation/features/hooks/index.js +1 -397
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/node/presentation/features/index.js +1 -3063
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/node/presentation/features/molecules/index.js +1 -505
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/node/presentation/features/organisms/index.js +1 -1359
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/presentation/features/atoms/index.js +1 -97
- package/dist/presentation/features/hooks/index.js +1 -397
- package/dist/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/presentation/features/index.js +1 -3063
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/presentation/features/molecules/index.js +1 -505
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/presentation/features/organisms/index.js +1 -1359
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/package.json +103 -31
- package/src/components/docs/DocsIndexPage.tsx +55 -0
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +19 -0
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +34 -0
- package/src/components/docs/docsManifest.test.ts +70 -0
- package/src/components/docs/docsManifest.ts +71 -1
- package/src/components/docs/ecosystem/PluginsPage.tsx +24 -10
- package/src/components/docs/ecosystem/RegistryPage.tsx +11 -6
- package/src/components/docs/generated/docs-index._common.json +206 -273
- package/src/components/docs/generated/docs-index.control-plane.json +18 -0
- package/src/components/docs/generated/docs-index.defineExample.json +10 -0
- package/src/components/docs/generated/docs-index.manifest.json +22 -12
- package/src/components/docs/generated/docs-index.platform-acp.json +64 -0
- package/src/components/docs/generated/docs-index.platform-agent.json +89 -1
- package/src/components/docs/generated/docs-index.platform-context.json +48 -0
- package/src/components/docs/generated/docs-index.platform-control-plane.json +72 -0
- package/src/components/docs/generated/docs-index.platform-database.json +40 -0
- package/src/components/docs/generated/docs-index.platform-docs.json +64 -0
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +89 -1
- package/src/components/docs/generated/docs-index.pocket-family-office.json +8 -0
- package/src/components/docs/generated/docs-index.unknown.json +8 -0
- package/src/components/docs/guides/GuideConnectInRepoPage.tsx +184 -0
- package/src/components/docs/guides/GuideFirstModuleBundlePage.tsx +182 -0
- package/src/components/docs/guides/GuideHostBuilderWorkbenchPage.tsx +230 -0
- package/src/components/docs/guides/GuidesIndexPage.tsx +21 -0
- package/src/components/docs/guides/index.ts +3 -0
- package/src/components/docs/specs/SpecsBuilderControlPlanePage.tsx +210 -0
- package/src/components/docs/specs/SpecsConnectPage.tsx +162 -0
- package/src/components/docs/specs/SpecsModuleBundlesPage.tsx +223 -0
- package/src/components/docs/specs/SpecsOverlaysPage.tsx +20 -0
- package/src/components/docs/specs/SpecsOverviewPage.tsx +44 -0
- package/src/components/docs/specs/index.ts +3 -0
- package/src/components/docs/studio/StudioOverviewPage.tsx +26 -0
- package/src/infrastructure/elysia/logger.ts +11 -3
package/dist/node/libs/email.js
CHANGED
|
@@ -1,203 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var DEFAULT_FROM = {
|
|
5
|
-
email: "noreply@transactional.contractspec.io",
|
|
6
|
-
name: "ContractSpec"
|
|
7
|
-
};
|
|
8
|
-
var DEFAULT_TEAM_INBOX = {
|
|
9
|
-
email: "contact@contractspec.io",
|
|
10
|
-
name: "ContractSpec Team"
|
|
11
|
-
};
|
|
12
|
-
var DEFAULT_REGION = "fr-par";
|
|
13
|
-
var cachedConfig = null;
|
|
14
|
-
var cachedClient = null;
|
|
15
|
-
var apiFactory = (client) => new Temv1alpha1.API(client);
|
|
16
|
-
var mapRegion = (value) => {
|
|
17
|
-
const normalized = value?.trim().toLowerCase();
|
|
18
|
-
if (normalized === "par" || normalized === "fr-par")
|
|
19
|
-
return "fr-par";
|
|
20
|
-
if (normalized === "ams" || normalized === "nl-ams")
|
|
21
|
-
return "nl-ams";
|
|
22
|
-
if (normalized === "waw" || normalized === "pl-waw")
|
|
23
|
-
return "pl-waw";
|
|
24
|
-
return DEFAULT_REGION;
|
|
25
|
-
};
|
|
26
|
-
var getEmailConfig = () => {
|
|
27
|
-
if (cachedConfig) {
|
|
28
|
-
return { ok: true, config: cachedConfig };
|
|
29
|
-
}
|
|
30
|
-
const accessKey = process.env.SCALEWAY_ACCESS_KEY || process.env.SCALEWAY_ACCESS_KEY_QUEUE;
|
|
31
|
-
const secretKey = process.env.SCALEWAY_SECRET_KEY || process.env.SCALEWAY_SECRET_KEY_QUEUE;
|
|
32
|
-
const projectId = process.env.SCALEWAY_PROJECT_ID;
|
|
33
|
-
if (!accessKey || !secretKey || !projectId) {
|
|
34
|
-
return {
|
|
35
|
-
ok: false,
|
|
36
|
-
errorMessage: "Email service is not configured. Please contact us directly at contact@contractspec.io."
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const region = mapRegion(process.env.SCALEWAY_REGION);
|
|
40
|
-
cachedConfig = {
|
|
41
|
-
accessKey,
|
|
42
|
-
secretKey,
|
|
43
|
-
projectId,
|
|
44
|
-
region,
|
|
45
|
-
defaultZone: `${region}-1`,
|
|
46
|
-
from: {
|
|
47
|
-
email: process.env.SCALEWAY_EMAIL_FROM_EMAIL ?? DEFAULT_FROM.email,
|
|
48
|
-
name: process.env.SCALEWAY_EMAIL_FROM_NAME ?? DEFAULT_FROM.name
|
|
49
|
-
},
|
|
50
|
-
teamInbox: {
|
|
51
|
-
email: process.env.SCALEWAY_EMAIL_TEAM_EMAIL ?? DEFAULT_TEAM_INBOX.email,
|
|
52
|
-
name: process.env.SCALEWAY_EMAIL_TEAM_NAME ?? DEFAULT_TEAM_INBOX.name
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
return { ok: true, config: cachedConfig };
|
|
56
|
-
};
|
|
57
|
-
var getTemClient = (config) => {
|
|
58
|
-
if (cachedClient) {
|
|
59
|
-
return cachedClient;
|
|
60
|
-
}
|
|
61
|
-
const client = createClient({
|
|
62
|
-
accessKey: config.accessKey,
|
|
63
|
-
secretKey: config.secretKey,
|
|
64
|
-
defaultProjectId: config.projectId,
|
|
65
|
-
defaultRegion: config.region,
|
|
66
|
-
defaultZone: config.defaultZone
|
|
67
|
-
});
|
|
68
|
-
cachedClient = apiFactory(client);
|
|
69
|
-
return cachedClient;
|
|
70
|
-
};
|
|
71
|
-
var sendEmail = async (config, request) => {
|
|
72
|
-
try {
|
|
73
|
-
const client = getTemClient(config);
|
|
74
|
-
await client.createEmail({
|
|
75
|
-
region: config.region,
|
|
76
|
-
projectId: config.projectId,
|
|
77
|
-
from: config.from,
|
|
78
|
-
to: request.to,
|
|
79
|
-
subject: request.subject,
|
|
80
|
-
text: request.text,
|
|
81
|
-
html: request.html || request.text,
|
|
82
|
-
additionalHeaders: request.replyTo ? [{ key: "Reply-To", value: request.replyTo }] : undefined
|
|
83
|
-
});
|
|
84
|
-
return { success: true };
|
|
85
|
-
} catch (error) {
|
|
86
|
-
new Logger().error("scaleway_tem_email_send_failed", {
|
|
87
|
-
context: request.context ?? "email",
|
|
88
|
-
error: error instanceof Error ? error.message : error
|
|
89
|
-
});
|
|
90
|
-
return {
|
|
91
|
-
success: false,
|
|
92
|
-
error,
|
|
93
|
-
errorMessage: "Failed to send email via Scaleway."
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
var __internal = {
|
|
98
|
-
resetCaches() {
|
|
99
|
-
cachedClient = null;
|
|
100
|
-
cachedConfig = null;
|
|
101
|
-
apiFactory = (client) => new Temv1alpha1.API(client);
|
|
102
|
-
},
|
|
103
|
-
setApiFactory(factory) {
|
|
104
|
-
apiFactory = factory;
|
|
105
|
-
},
|
|
106
|
-
setClient(client) {
|
|
107
|
-
cachedClient = client;
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
// src/libs/email/utils.ts
|
|
112
|
-
var escapeHtml = (value) => value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
113
|
-
var formatMultilineHtml = (value) => escapeHtml(value).replaceAll(`
|
|
114
|
-
`, "<br />");
|
|
115
|
-
|
|
116
|
-
// src/libs/email/contact.ts
|
|
117
|
-
"use server";
|
|
118
|
-
var CONTACT_MISSING_CONFIG = "Email service is not configured. Please contact us directly at contact@contractspec.io.";
|
|
119
|
-
var CONTACT_SEND_ERROR = "Failed to send message. Please contact us directly at contact@contractspec.io.";
|
|
120
|
-
var submitContactForm = async (formData) => {
|
|
121
|
-
const name = (formData.get("name") ?? "").toString().trim();
|
|
122
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
123
|
-
const message = (formData.get("message") ?? "").toString().trim();
|
|
124
|
-
if (!email) {
|
|
125
|
-
return {
|
|
126
|
-
success: false,
|
|
127
|
-
text: "Please fill in all required fields."
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
const configResult = getEmailConfig();
|
|
131
|
-
if (!configResult.ok || !configResult.config) {
|
|
132
|
-
return {
|
|
133
|
-
success: false,
|
|
134
|
-
text: configResult.errorMessage ?? CONTACT_MISSING_CONFIG
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
const senderName = name || email;
|
|
138
|
-
const emailContentText = `
|
|
139
|
-
New contact form submission from ${senderName}
|
|
1
|
+
import{Logger as _}from"@contractspec/lib.logger";import{createClient as W,Temv1alpha1 as w}from"@scaleway/sdk";var b={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},S={email:"contact@contractspec.io",name:"ContractSpec Team"},$="fr-par",g=null,d=null,y=(e)=>new w.API(e),P=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return $},m=()=>{if(g)return{ok:!0,config:g};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,i=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!i)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let o=P(process.env.SCALEWAY_REGION);return g={accessKey:e,secretKey:t,projectId:i,region:o,defaultZone:`${o}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??b.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??b.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??S.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??S.name}},{ok:!0,config:g}},k=(e)=>{if(d)return d;let t=W({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return d=y(t),d},n=async(e,t)=>{try{return await k(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(i){return new _().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:i instanceof Error?i.message:i}),{success:!1,error:i,errorMessage:"Failed to send email via Scaleway."}}},Q={resetCaches(){d=null,g=null,y=(e)=>new w.API(e)},setApiFactory(e){y=e},setClient(e){d=e}};var a=(e)=>e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),r=(e)=>a(e).replaceAll(`
|
|
2
|
+
`,"<br />");var M="Email service is not configured. Please contact us directly at contact@contractspec.io.",F="Failed to send message. Please contact us directly at contact@contractspec.io.",O=async(e)=>{let t=(e.get("name")??"").toString().trim(),i=(e.get("email")??"").toString().trim(),o=(e.get("message")??"").toString().trim();if(!i)return{success:!1,text:"Please fill in all required fields."};let s=m();if(!s.ok||!s.config)return{success:!1,text:s.errorMessage??M};let l=t||i,c=`
|
|
3
|
+
New contact form submission from ${l}
|
|
140
4
|
|
|
141
5
|
Contact Information:
|
|
142
|
-
- Name: ${
|
|
143
|
-
- Email: ${
|
|
6
|
+
- Name: ${t||"Not provided"}
|
|
7
|
+
- Email: ${i}
|
|
144
8
|
|
|
145
9
|
Message:
|
|
146
|
-
${
|
|
10
|
+
${o||"No message provided"}
|
|
147
11
|
|
|
148
12
|
---
|
|
149
13
|
Submitted via ContractSpec contact form
|
|
150
|
-
`.trim()
|
|
151
|
-
const emailContentHtml = `
|
|
14
|
+
`.trim(),p=`
|
|
152
15
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
153
16
|
<h1 style="color: #8b5cf6; margin-bottom: 12px;">New contact form submission</h1>
|
|
154
|
-
<p style="margin: 0 0 12px;">From ${
|
|
17
|
+
<p style="margin: 0 0 12px;">From ${a(l)}</p>
|
|
155
18
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Contact Information</h2>
|
|
156
19
|
<ul style="padding-left: 16px; line-height: 1.6; margin: 0 0 16px;">
|
|
157
|
-
<li>Name: ${
|
|
158
|
-
<li>Email: ${
|
|
20
|
+
<li>Name: ${a(t||"Not provided")}</li>
|
|
21
|
+
<li>Email: ${a(i)}</li>
|
|
159
22
|
</ul>
|
|
160
23
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Message</h2>
|
|
161
24
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;">
|
|
162
|
-
${
|
|
25
|
+
${o?r(o):"No message provided"}
|
|
163
26
|
</div>
|
|
164
27
|
<p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec contact form</p>
|
|
165
28
|
</div>
|
|
166
|
-
`;
|
|
167
|
-
const sendResult = await sendEmail(configResult.config, {
|
|
168
|
-
to: [configResult.config.teamInbox],
|
|
169
|
-
subject: `New Contact Form Message from ${senderName}`,
|
|
170
|
-
text: emailContentText,
|
|
171
|
-
html: emailContentHtml,
|
|
172
|
-
replyTo: email,
|
|
173
|
-
context: "contact-form"
|
|
174
|
-
});
|
|
175
|
-
if (!sendResult.success) {
|
|
176
|
-
return { success: false, text: CONTACT_SEND_ERROR };
|
|
177
|
-
}
|
|
178
|
-
return { success: true, text: "Message sent successfully!" };
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
// src/libs/email/newsletter.ts
|
|
182
|
-
"use server";
|
|
183
|
-
var NEWSLETTER_MISSING_CONFIG = "Newsletter service is not configured. Please try again later.";
|
|
184
|
-
var NEWSLETTER_SEND_ERROR = "Failed to subscribe. Please try again later or contact us directly.";
|
|
185
|
-
var subscribeToNewsletter = async (formData) => {
|
|
186
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
187
|
-
if (!email || !email.includes("@")) {
|
|
188
|
-
return {
|
|
189
|
-
success: false,
|
|
190
|
-
text: "Please enter a valid email address."
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
const configResult = getEmailConfig();
|
|
194
|
-
if (!configResult.ok || !configResult.config) {
|
|
195
|
-
return {
|
|
196
|
-
success: false,
|
|
197
|
-
text: configResult.errorMessage ?? NEWSLETTER_MISSING_CONFIG
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
const welcomeText = `
|
|
29
|
+
`;if(!(await n(s.config,{to:[s.config.teamInbox],subject:`New Contact Form Message from ${l}`,text:c,html:p,replyTo:i,context:"contact-form"})).success)return{success:!1,text:F};return{success:!0,text:"Message sent successfully!"}};var Y="Newsletter service is not configured. Please try again later.",E="Failed to subscribe. Please try again later or contact us directly.",L=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let i=m();if(!i.ok||!i.config)return{success:!1,text:i.errorMessage??Y};let o=`
|
|
201
30
|
Welcome to ContractSpec!
|
|
202
31
|
|
|
203
32
|
Thanks for subscribing to our newsletter. You'll receive updates on:
|
|
@@ -215,8 +44,7 @@ ContractSpec Team
|
|
|
215
44
|
https://contractspec.io
|
|
216
45
|
|
|
217
46
|
Unsubscribe: Reply to this email with "unsubscribe"
|
|
218
|
-
`.trim()
|
|
219
|
-
const welcomeHtml = `
|
|
47
|
+
`.trim(),s=`
|
|
220
48
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
221
49
|
<h1 style="color: #8b5cf6;">Welcome to ContractSpec!</h1>
|
|
222
50
|
<p>Thanks for subscribing to our newsletter. You'll receive updates on:</p>
|
|
@@ -237,57 +65,12 @@ Unsubscribe: Reply to this email with "unsubscribe"
|
|
|
237
65
|
To unsubscribe, reply to this email with "unsubscribe"
|
|
238
66
|
</p>
|
|
239
67
|
</div>
|
|
240
|
-
`;
|
|
241
|
-
const userSend = await sendEmail(configResult.config, {
|
|
242
|
-
to: [{ email }],
|
|
243
|
-
subject: "Welcome to ContractSpec Newsletter",
|
|
244
|
-
text: welcomeText,
|
|
245
|
-
html: welcomeHtml,
|
|
246
|
-
context: "newsletter-welcome"
|
|
247
|
-
});
|
|
248
|
-
if (!userSend.success) {
|
|
249
|
-
return { success: false, text: NEWSLETTER_SEND_ERROR };
|
|
250
|
-
}
|
|
251
|
-
const teamNotificationText = `New newsletter subscription from: ${email}`;
|
|
252
|
-
const teamNotificationHtml = `
|
|
68
|
+
`;if(!(await n(i.config,{to:[{email:t}],subject:"Welcome to ContractSpec Newsletter",text:o,html:s,context:"newsletter-welcome"})).success)return{success:!1,text:E};let c=`New newsletter subscription from: ${t}`,p=`
|
|
253
69
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
254
70
|
<p style="margin: 0 0 8px;">New newsletter subscription</p>
|
|
255
|
-
<p style="margin: 0;"><strong>Email:</strong> ${
|
|
71
|
+
<p style="margin: 0;"><strong>Email:</strong> ${r(t)}</p>
|
|
256
72
|
</div>
|
|
257
|
-
`;
|
|
258
|
-
const teamSend = await sendEmail(configResult.config, {
|
|
259
|
-
to: [configResult.config.teamInbox],
|
|
260
|
-
subject: `New Newsletter Subscription: ${email}`,
|
|
261
|
-
text: teamNotificationText,
|
|
262
|
-
html: teamNotificationHtml,
|
|
263
|
-
context: "newsletter-team-notification"
|
|
264
|
-
});
|
|
265
|
-
if (!teamSend.success) {
|
|
266
|
-
return { success: false, text: NEWSLETTER_SEND_ERROR };
|
|
267
|
-
}
|
|
268
|
-
return { success: true, text: "Successfully subscribed!" };
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
// src/libs/email/waitlist.ts
|
|
272
|
-
"use server";
|
|
273
|
-
var WAITLIST_MISSING_CONFIG = "Waitlist service is not configured. Please try again later.";
|
|
274
|
-
var WAITLIST_SEND_ERROR = "Failed to join waitlist. Please try again later or contact us directly.";
|
|
275
|
-
var joinWaitlist = async (formData) => {
|
|
276
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
277
|
-
if (!email || !email.includes("@")) {
|
|
278
|
-
return {
|
|
279
|
-
success: false,
|
|
280
|
-
text: "Please enter a valid email address."
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
const configResult = getEmailConfig();
|
|
284
|
-
if (!configResult.ok || !configResult.config) {
|
|
285
|
-
return {
|
|
286
|
-
success: false,
|
|
287
|
-
text: configResult.errorMessage ?? WAITLIST_MISSING_CONFIG
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
const waitlistText = `
|
|
73
|
+
`;if(!(await n(i.config,{to:[i.config.teamInbox],subject:`New Newsletter Subscription: ${t}`,text:c,html:p,context:"newsletter-team-notification"})).success)return{success:!1,text:E};return{success:!0,text:"Successfully subscribed!"}};var j="Waitlist service is not configured. Please try again later.",C="Failed to join waitlist. Please try again later or contact us directly.",H=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let i=m();if(!i.ok||!i.config)return{success:!1,text:i.errorMessage??j};let o=`
|
|
291
74
|
You're on the waitlist!
|
|
292
75
|
|
|
293
76
|
Thanks for joining the ContractSpec waitlist. You're now in line for early access to:
|
|
@@ -310,8 +93,7 @@ ContractSpec Team
|
|
|
310
93
|
https://contractspec.io
|
|
311
94
|
|
|
312
95
|
To remove yourself from the waitlist, reply to this email with "remove"
|
|
313
|
-
`.trim()
|
|
314
|
-
const waitlistHtml = `
|
|
96
|
+
`.trim(),s=`
|
|
315
97
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
316
98
|
<h1 style="color: #8b5cf6;">You're on the waitlist!</h1>
|
|
317
99
|
<p>Thanks for joining the ContractSpec waitlist. You're now in line for early access to:</p>
|
|
@@ -337,72 +119,12 @@ To remove yourself from the waitlist, reply to this email with "remove"
|
|
|
337
119
|
To remove yourself from the waitlist, reply to this email with "remove"
|
|
338
120
|
</p>
|
|
339
121
|
</div>
|
|
340
|
-
`;
|
|
341
|
-
const userSend = await sendEmail(configResult.config, {
|
|
342
|
-
to: [{ email }],
|
|
343
|
-
subject: "You're on the ContractSpec waitlist!",
|
|
344
|
-
text: waitlistText,
|
|
345
|
-
html: waitlistHtml,
|
|
346
|
-
context: "waitlist-welcome"
|
|
347
|
-
});
|
|
348
|
-
if (!userSend.success) {
|
|
349
|
-
return { success: false, text: WAITLIST_SEND_ERROR };
|
|
350
|
-
}
|
|
351
|
-
const teamNotificationText = `New waitlist signup from: ${email}`;
|
|
352
|
-
const teamNotificationHtml = `
|
|
122
|
+
`;if(!(await n(i.config,{to:[{email:t}],subject:"You're on the ContractSpec waitlist!",text:o,html:s,context:"waitlist-welcome"})).success)return{success:!1,text:C};let c=`New waitlist signup from: ${t}`,p=`
|
|
353
123
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
354
124
|
<p style="margin: 0 0 8px;">New waitlist signup</p>
|
|
355
|
-
<p style="margin: 0;"><strong>Email:</strong> ${
|
|
125
|
+
<p style="margin: 0;"><strong>Email:</strong> ${r(t)}</p>
|
|
356
126
|
</div>
|
|
357
|
-
`;
|
|
358
|
-
const teamSend = await sendEmail(configResult.config, {
|
|
359
|
-
to: [configResult.config.teamInbox],
|
|
360
|
-
subject: `New Waitlist Signup: ${email}`,
|
|
361
|
-
text: teamNotificationText,
|
|
362
|
-
html: teamNotificationHtml,
|
|
363
|
-
context: "waitlist-team-notification"
|
|
364
|
-
});
|
|
365
|
-
if (!teamSend.success) {
|
|
366
|
-
return { success: false, text: WAITLIST_SEND_ERROR };
|
|
367
|
-
}
|
|
368
|
-
return { success: true, text: "Successfully joined waitlist!" };
|
|
369
|
-
};
|
|
370
|
-
|
|
371
|
-
// src/libs/email/waitlist-application.ts
|
|
372
|
-
"use server";
|
|
373
|
-
var APPLICATION_MISSING_CONFIG = "Waitlist application service is not configured. Please try again later.";
|
|
374
|
-
var APPLICATION_SEND_ERROR = "Failed to submit application. Please try again later or contact us directly.";
|
|
375
|
-
var submitWaitlistApplication = async (formData) => {
|
|
376
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
377
|
-
const name = (formData.get("name") ?? "").toString().trim();
|
|
378
|
-
const company = (formData.get("company") ?? "").toString().trim();
|
|
379
|
-
const role = (formData.get("role") ?? "").toString().trim();
|
|
380
|
-
const whatBuilding = (formData.get("whatBuilding") ?? "").toString().trim();
|
|
381
|
-
const whatSolving = (formData.get("whatSolving") ?? "").toString().trim();
|
|
382
|
-
const teamSize = (formData.get("teamSize") ?? "").toString().trim();
|
|
383
|
-
const timeline = (formData.get("timeline") ?? "").toString().trim();
|
|
384
|
-
const openToSessions = formData.get("openToSessions") === "on";
|
|
385
|
-
const okayWithCaseStudies = formData.get("okayWithCaseStudies") === "on";
|
|
386
|
-
if (!email || !email.includes("@")) {
|
|
387
|
-
return {
|
|
388
|
-
success: false,
|
|
389
|
-
text: "Please enter a valid email address."
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
if (!name || !whatBuilding || !whatSolving) {
|
|
393
|
-
return {
|
|
394
|
-
success: false,
|
|
395
|
-
text: "Please fill in all required fields."
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
const configResult = getEmailConfig();
|
|
399
|
-
if (!configResult.ok || !configResult.config) {
|
|
400
|
-
return {
|
|
401
|
-
success: false,
|
|
402
|
-
text: configResult.errorMessage ?? APPLICATION_MISSING_CONFIG
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
const applicantText = `
|
|
127
|
+
`;if(!(await n(i.config,{to:[i.config.teamInbox],subject:`New Waitlist Signup: ${t}`,text:c,html:p,context:"waitlist-team-notification"})).success)return{success:!1,text:C};return{success:!0,text:"Successfully joined waitlist!"}};var z="Waitlist application service is not configured. Please try again later.",v="Failed to submit application. Please try again later or contact us directly.",D=async(e)=>{let t=(e.get("email")??"").toString().trim(),i=(e.get("name")??"").toString().trim(),o=(e.get("company")??"").toString().trim(),s=(e.get("role")??"").toString().trim(),l=(e.get("whatBuilding")??"").toString().trim(),c=(e.get("whatSolving")??"").toString().trim(),p=(e.get("teamSize")??"").toString().trim(),f=(e.get("timeline")??"").toString().trim(),h=e.get("openToSessions")==="on",x=e.get("okayWithCaseStudies")==="on";if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};if(!i||!l||!c)return{success:!1,text:"Please fill in all required fields."};let u=m();if(!u.ok||!u.config)return{success:!1,text:u.errorMessage??z};let A=`
|
|
406
128
|
You're on the list.
|
|
407
129
|
|
|
408
130
|
Thanks for applying to the ContractSpec design partner program. We're slowly onboarding design partners in waves. If your use case is a good fit, we'll reach out personally.
|
|
@@ -421,8 +143,7 @@ We're excited about the possibility of working together!
|
|
|
421
143
|
---
|
|
422
144
|
ContractSpec Team
|
|
423
145
|
https://contractspec.io
|
|
424
|
-
`.trim()
|
|
425
|
-
const applicantHtml = `
|
|
146
|
+
`.trim(),N=`
|
|
426
147
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
427
148
|
<h1 style="color: #8b5cf6;">You're on the list.</h1>
|
|
428
149
|
<p>Thanks for applying to the ContractSpec design partner program. We're slowly onboarding design partners in waves. If your use case is a good fit, we'll reach out personally.</p>
|
|
@@ -444,99 +165,61 @@ https://contractspec.io
|
|
|
444
165
|
<a href="https://contractspec.io" style="color: #8b5cf6;">contractspec.io</a>
|
|
445
166
|
</p>
|
|
446
167
|
</div>
|
|
447
|
-
`;
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
text: applicantText,
|
|
452
|
-
html: applicantHtml,
|
|
453
|
-
context: "waitlist-application-welcome"
|
|
454
|
-
});
|
|
455
|
-
if (!applicantSend.success) {
|
|
456
|
-
return { success: false, text: APPLICATION_SEND_ERROR };
|
|
457
|
-
}
|
|
458
|
-
const preferencesText = `
|
|
459
|
-
Open to 1:1 product/design sessions: ${openToSessions ? "Yes" : "No"}
|
|
460
|
-
Okay with anonymized case studies: ${okayWithCaseStudies ? "Yes" : "No"}
|
|
461
|
-
`.trim();
|
|
462
|
-
const teamEmailText = `
|
|
168
|
+
`;if(!(await n(u.config,{to:[{email:t}],subject:"You're on the ContractSpec design partner waitlist!",text:A,html:N,context:"waitlist-application-welcome"})).success)return{success:!1,text:v};let I=`
|
|
169
|
+
Open to 1:1 product/design sessions: ${h?"Yes":"No"}
|
|
170
|
+
Okay with anonymized case studies: ${x?"Yes":"No"}
|
|
171
|
+
`.trim(),T=`
|
|
463
172
|
New Design Partner Waitlist Application
|
|
464
173
|
|
|
465
174
|
Contact Information:
|
|
466
|
-
- Name: ${
|
|
467
|
-
- Email: ${
|
|
468
|
-
${
|
|
469
|
-
${
|
|
175
|
+
- Name: ${i}
|
|
176
|
+
- Email: ${t}
|
|
177
|
+
${o?`- Company/Project: ${o}`:""}
|
|
178
|
+
${s?`- Role: ${s}`:""}
|
|
470
179
|
|
|
471
180
|
Application Details:
|
|
472
181
|
- What are you building with AI today?
|
|
473
|
-
${
|
|
182
|
+
${l}
|
|
474
183
|
|
|
475
184
|
- What do you hope ContractSpec will solve for you?
|
|
476
|
-
${
|
|
185
|
+
${c}
|
|
477
186
|
|
|
478
|
-
- Team Size: ${
|
|
479
|
-
- Timeline: ${
|
|
187
|
+
- Team Size: ${p||"Not specified"}
|
|
188
|
+
- Timeline: ${f||"Not specified"}
|
|
480
189
|
|
|
481
190
|
Preferences:
|
|
482
|
-
- Open to 1:1 product/design sessions: ${
|
|
483
|
-
- Okay with anonymized case studies: ${
|
|
191
|
+
- Open to 1:1 product/design sessions: ${h?"Yes":"No"}
|
|
192
|
+
- Okay with anonymized case studies: ${x?"Yes":"No"}
|
|
484
193
|
|
|
485
194
|
---
|
|
486
195
|
Submitted via ContractSpec waitlist application form
|
|
487
|
-
`.trim()
|
|
488
|
-
const teamEmailHtml = `
|
|
196
|
+
`.trim(),R=`
|
|
489
197
|
<div style="font-family: sans-serif; max-width: 720px; margin: 0 auto;">
|
|
490
198
|
<h1 style="color: #8b5cf6;">New Design Partner Waitlist Application</h1>
|
|
491
199
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Contact Information</h2>
|
|
492
200
|
<ul style="padding-left: 16px; line-height: 1.6; margin: 0 0 16px;">
|
|
493
|
-
<li>Name: ${
|
|
494
|
-
<li>Email: ${
|
|
495
|
-
${
|
|
496
|
-
${
|
|
201
|
+
<li>Name: ${a(i)}</li>
|
|
202
|
+
<li>Email: ${a(t)}</li>
|
|
203
|
+
${o?`<li>Company/Project: ${a(o)}</li>`:""}
|
|
204
|
+
${s?`<li>Role: ${a(s)}</li>`:""}
|
|
497
205
|
</ul>
|
|
498
206
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Application Details</h2>
|
|
499
207
|
<p style="margin: 0 0 8px; font-weight: 600;">What are you building with AI today?</p>
|
|
500
208
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;">
|
|
501
|
-
${
|
|
209
|
+
${r(l)}
|
|
502
210
|
</div>
|
|
503
211
|
<p style="margin: 16px 0 8px; font-weight: 600;">What do you hope ContractSpec will solve for you?</p>
|
|
504
212
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;">
|
|
505
|
-
${
|
|
213
|
+
${r(c)}
|
|
506
214
|
</div>
|
|
507
215
|
<ul style="padding-left: 16px; line-height: 1.6; margin: 16px 0;">
|
|
508
|
-
<li>Team Size: ${
|
|
509
|
-
<li>Timeline: ${
|
|
216
|
+
<li>Team Size: ${a(p||"Not specified")}</li>
|
|
217
|
+
<li>Timeline: ${a(f||"Not specified")}</li>
|
|
510
218
|
</ul>
|
|
511
219
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Preferences</h2>
|
|
512
220
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; line-height: 1.6;">
|
|
513
|
-
${
|
|
221
|
+
${r(I)}
|
|
514
222
|
</div>
|
|
515
223
|
<p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec waitlist application form</p>
|
|
516
224
|
</div>
|
|
517
|
-
`;
|
|
518
|
-
const teamSend = await sendEmail(configResult.config, {
|
|
519
|
-
to: [configResult.config.teamInbox],
|
|
520
|
-
subject: `New Design Partner Application: ${name} (${email})`,
|
|
521
|
-
text: teamEmailText,
|
|
522
|
-
html: teamEmailHtml,
|
|
523
|
-
replyTo: email,
|
|
524
|
-
context: "waitlist-application-team-notification"
|
|
525
|
-
});
|
|
526
|
-
if (!teamSend.success) {
|
|
527
|
-
return { success: false, text: APPLICATION_SEND_ERROR };
|
|
528
|
-
}
|
|
529
|
-
return {
|
|
530
|
-
success: true,
|
|
531
|
-
text: "Application submitted successfully!"
|
|
532
|
-
};
|
|
533
|
-
};
|
|
534
|
-
|
|
535
|
-
// src/libs/email.ts
|
|
536
|
-
"use server";
|
|
537
|
-
export {
|
|
538
|
-
subscribeToNewsletter,
|
|
539
|
-
submitWaitlistApplication,
|
|
540
|
-
submitContactForm,
|
|
541
|
-
joinWaitlist
|
|
542
|
-
};
|
|
225
|
+
`;if(!(await n(u.config,{to:[u.config.teamInbox],subject:`New Design Partner Application: ${i} (${t})`,text:T,html:R,replyTo:t,context:"waitlist-application-team-notification"})).success)return{success:!1,text:v};return{success:!0,text:"Application submitted successfully!"}};export{L as subscribeToNewsletter,D as submitWaitlistApplication,O as submitContactForm,H as joinWaitlist};
|
|
@@ -1,63 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import posthog from "posthog-js";
|
|
3
|
-
var analyticsEventNames = {
|
|
4
|
-
CTA_INSTALL_CLICK: "cta_install_click",
|
|
5
|
-
CTA_STUDIO_CLICK: "cta_studio_click",
|
|
6
|
-
DOCS_QUICKSTART_VIEW: "docs_quickstart_view",
|
|
7
|
-
COPY_COMMAND_CLICK: "copy_command_click",
|
|
8
|
-
EXAMPLE_REPO_OPEN: "example_repo_open"
|
|
9
|
-
};
|
|
10
|
-
var posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
11
|
-
var posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
12
|
-
var shouldCaptureAnalytics = () => {
|
|
13
|
-
if (typeof window === "undefined")
|
|
14
|
-
return false;
|
|
15
|
-
const nav = window.navigator;
|
|
16
|
-
const dntWindow = window;
|
|
17
|
-
const dnt = nav.doNotTrack ?? nav.msDoNotTrack ?? dntWindow.doNotTrack;
|
|
18
|
-
return dnt !== "1" && dnt !== "yes";
|
|
19
|
-
};
|
|
20
|
-
function initPosthog() {
|
|
21
|
-
if (typeof window === "undefined")
|
|
22
|
-
return;
|
|
23
|
-
if (!posthogKey) {
|
|
24
|
-
console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
if (!shouldCaptureAnalytics())
|
|
28
|
-
return;
|
|
29
|
-
const isDev = false;
|
|
30
|
-
posthog.init(posthogKey, {
|
|
31
|
-
api_host: posthogHost,
|
|
32
|
-
autocapture: !isDev,
|
|
33
|
-
capture_dead_clicks: !isDev,
|
|
34
|
-
capture_performance: !isDev,
|
|
35
|
-
capture_pageview: !isDev,
|
|
36
|
-
capture_heatmaps: !isDev,
|
|
37
|
-
capture_exceptions: !isDev,
|
|
38
|
-
debug: false
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function captureAnalyticsEvent(event, properties) {
|
|
42
|
-
if (!posthogKey)
|
|
43
|
-
return;
|
|
44
|
-
if (!shouldCaptureAnalytics())
|
|
45
|
-
return;
|
|
46
|
-
try {
|
|
47
|
-
const globalPosthog = globalThis.posthog;
|
|
48
|
-
const instance = globalPosthog ?? posthog;
|
|
49
|
-
instance?.capture?.(event, properties);
|
|
50
|
-
} catch {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
var client_default = posthog;
|
|
55
|
-
export {
|
|
56
|
-
posthogKey,
|
|
57
|
-
posthogHost,
|
|
58
|
-
posthog,
|
|
59
|
-
initPosthog,
|
|
60
|
-
client_default as default,
|
|
61
|
-
captureAnalyticsEvent,
|
|
62
|
-
analyticsEventNames
|
|
63
|
-
};
|
|
1
|
+
import s from"posthog-js";var p={CTA_INSTALL_CLICK:"cta_install_click",CTA_STUDIO_CLICK:"cta_studio_click",DOCS_QUICKSTART_VIEW:"docs_quickstart_view",COPY_COMMAND_CLICK:"copy_command_click",EXAMPLE_REPO_OPEN:"example_repo_open"},n=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,c=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com",a=()=>{if(typeof window>"u")return!1;let t=window.navigator,o=window,e=t.doNotTrack??t.msDoNotTrack??o.doNotTrack;return e!=="1"&&e!=="yes"};function _(){if(typeof window>"u")return;if(!n){console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");return}if(!a())return;let t=!1;s.init(n,{api_host:c,autocapture:!t,capture_dead_clicks:!t,capture_performance:!t,capture_pageview:!t,capture_heatmaps:!t,capture_exceptions:!t,debug:!1})}function u(t,o){if(!n)return;if(!a())return;try{(globalThis.posthog??s)?.capture?.(t,o)}catch{return}}var l=s;export{n as posthogKey,c as posthogHost,s as posthog,_ as initPosthog,l as default,u as captureAnalyticsEvent,p as analyticsEventNames};
|
|
@@ -1,23 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { PostHog } from "posthog-react-native";
|
|
3
|
-
var posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
4
|
-
var posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
5
|
-
function initPosthog() {
|
|
6
|
-
const posthogKey2 = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
7
|
-
const posthogHost2 = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
8
|
-
if (!posthogKey2) {
|
|
9
|
-
console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");
|
|
10
|
-
throw new Error("NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");
|
|
11
|
-
}
|
|
12
|
-
const posthog = new PostHog(posthogKey2, {
|
|
13
|
-
host: posthogHost2
|
|
14
|
-
});
|
|
15
|
-
return posthog;
|
|
16
|
-
}
|
|
17
|
-
var posthog = initPosthog();
|
|
18
|
-
export {
|
|
19
|
-
posthogKey,
|
|
20
|
-
posthogHost,
|
|
21
|
-
posthog,
|
|
22
|
-
initPosthog
|
|
23
|
-
};
|
|
1
|
+
import{PostHog as k}from"posthog-react-native";var z=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,A=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com";function q(){let f=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,j=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com";if(!f)throw console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing"),Error("NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");return new k(f,{host:j})}var B=q();export{z as posthogKey,A as posthogHost,B as posthog,q as initPosthog};
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { PostHog } from "posthog-node";
|
|
3
|
-
var posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
4
|
-
var posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
5
|
-
var posthogServer = posthogKey ? new PostHog(posthogKey, {
|
|
6
|
-
host: posthogHost,
|
|
7
|
-
flushAt: 1,
|
|
8
|
-
flushInterval: 0
|
|
9
|
-
}) : null;
|
|
10
|
-
var server_default = posthogServer;
|
|
11
|
-
export {
|
|
12
|
-
server_default as default
|
|
13
|
-
};
|
|
1
|
+
import{PostHog as t}from"posthog-node";var o=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,s=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com",e=o?new t(o,{host:s,flushAt:1,flushInterval:0}):null,n=e;export{n as default};
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var PRICING_EXAMPLES = {
|
|
3
|
-
free: {
|
|
4
|
-
regenerationsPerMonth: 200,
|
|
5
|
-
aiActionsPerMonth: 100,
|
|
6
|
-
projects: 1
|
|
7
|
-
},
|
|
8
|
-
builder: {
|
|
9
|
-
regenerationsPerMonthHint: "1,000–2,000+",
|
|
10
|
-
aiActionsPerMonthHint: "1,000+"
|
|
11
|
-
},
|
|
12
|
-
team: {
|
|
13
|
-
description: "Higher limits + cheaper per-regen at scale"
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
export {
|
|
17
|
-
PRICING_EXAMPLES
|
|
18
|
-
};
|
|
1
|
+
var e={free:{regenerationsPerMonth:200,aiActionsPerMonth:100,projects:1},builder:{regenerationsPerMonthHint:"1,000–2,000+",aiActionsPerMonthHint:"1,000+"},team:{description:"Higher limits + cheaper per-regen at scale"}};export{e as PRICING_EXAMPLES};
|