@contractspec/bundle.library 3.8.9 → 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 +68 -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 -24297
- 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 -312
- package/dist/components/docs/specs/index.d.ts +3 -0
- package/dist/components/docs/specs/index.js +109 -1702
- 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 -28580
- 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 -24297
- 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 -312
- package/dist/node/components/docs/specs/index.js +109 -1702
- 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 -28580
- 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 +109 -37
- 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/SpecsWorkflowsPage.tsx +9 -1
- 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/libs/email.js
CHANGED
|
@@ -1,204 +1,33 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var DEFAULT_FROM = {
|
|
6
|
-
email: "noreply@transactional.contractspec.io",
|
|
7
|
-
name: "ContractSpec"
|
|
8
|
-
};
|
|
9
|
-
var DEFAULT_TEAM_INBOX = {
|
|
10
|
-
email: "contact@contractspec.io",
|
|
11
|
-
name: "ContractSpec Team"
|
|
12
|
-
};
|
|
13
|
-
var DEFAULT_REGION = "fr-par";
|
|
14
|
-
var cachedConfig = null;
|
|
15
|
-
var cachedClient = null;
|
|
16
|
-
var apiFactory = (client) => new Temv1alpha1.API(client);
|
|
17
|
-
var mapRegion = (value) => {
|
|
18
|
-
const normalized = value?.trim().toLowerCase();
|
|
19
|
-
if (normalized === "par" || normalized === "fr-par")
|
|
20
|
-
return "fr-par";
|
|
21
|
-
if (normalized === "ams" || normalized === "nl-ams")
|
|
22
|
-
return "nl-ams";
|
|
23
|
-
if (normalized === "waw" || normalized === "pl-waw")
|
|
24
|
-
return "pl-waw";
|
|
25
|
-
return DEFAULT_REGION;
|
|
26
|
-
};
|
|
27
|
-
var getEmailConfig = () => {
|
|
28
|
-
if (cachedConfig) {
|
|
29
|
-
return { ok: true, config: cachedConfig };
|
|
30
|
-
}
|
|
31
|
-
const accessKey = process.env.SCALEWAY_ACCESS_KEY || process.env.SCALEWAY_ACCESS_KEY_QUEUE;
|
|
32
|
-
const secretKey = process.env.SCALEWAY_SECRET_KEY || process.env.SCALEWAY_SECRET_KEY_QUEUE;
|
|
33
|
-
const projectId = process.env.SCALEWAY_PROJECT_ID;
|
|
34
|
-
if (!accessKey || !secretKey || !projectId) {
|
|
35
|
-
return {
|
|
36
|
-
ok: false,
|
|
37
|
-
errorMessage: "Email service is not configured. Please contact us directly at contact@contractspec.io."
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
const region = mapRegion(process.env.SCALEWAY_REGION);
|
|
41
|
-
cachedConfig = {
|
|
42
|
-
accessKey,
|
|
43
|
-
secretKey,
|
|
44
|
-
projectId,
|
|
45
|
-
region,
|
|
46
|
-
defaultZone: `${region}-1`,
|
|
47
|
-
from: {
|
|
48
|
-
email: process.env.SCALEWAY_EMAIL_FROM_EMAIL ?? DEFAULT_FROM.email,
|
|
49
|
-
name: process.env.SCALEWAY_EMAIL_FROM_NAME ?? DEFAULT_FROM.name
|
|
50
|
-
},
|
|
51
|
-
teamInbox: {
|
|
52
|
-
email: process.env.SCALEWAY_EMAIL_TEAM_EMAIL ?? DEFAULT_TEAM_INBOX.email,
|
|
53
|
-
name: process.env.SCALEWAY_EMAIL_TEAM_NAME ?? DEFAULT_TEAM_INBOX.name
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
return { ok: true, config: cachedConfig };
|
|
57
|
-
};
|
|
58
|
-
var getTemClient = (config) => {
|
|
59
|
-
if (cachedClient) {
|
|
60
|
-
return cachedClient;
|
|
61
|
-
}
|
|
62
|
-
const client = createClient({
|
|
63
|
-
accessKey: config.accessKey,
|
|
64
|
-
secretKey: config.secretKey,
|
|
65
|
-
defaultProjectId: config.projectId,
|
|
66
|
-
defaultRegion: config.region,
|
|
67
|
-
defaultZone: config.defaultZone
|
|
68
|
-
});
|
|
69
|
-
cachedClient = apiFactory(client);
|
|
70
|
-
return cachedClient;
|
|
71
|
-
};
|
|
72
|
-
var sendEmail = async (config, request) => {
|
|
73
|
-
try {
|
|
74
|
-
const client = getTemClient(config);
|
|
75
|
-
await client.createEmail({
|
|
76
|
-
region: config.region,
|
|
77
|
-
projectId: config.projectId,
|
|
78
|
-
from: config.from,
|
|
79
|
-
to: request.to,
|
|
80
|
-
subject: request.subject,
|
|
81
|
-
text: request.text,
|
|
82
|
-
html: request.html || request.text,
|
|
83
|
-
additionalHeaders: request.replyTo ? [{ key: "Reply-To", value: request.replyTo }] : undefined
|
|
84
|
-
});
|
|
85
|
-
return { success: true };
|
|
86
|
-
} catch (error) {
|
|
87
|
-
new Logger().error("scaleway_tem_email_send_failed", {
|
|
88
|
-
context: request.context ?? "email",
|
|
89
|
-
error: error instanceof Error ? error.message : error
|
|
90
|
-
});
|
|
91
|
-
return {
|
|
92
|
-
success: false,
|
|
93
|
-
error,
|
|
94
|
-
errorMessage: "Failed to send email via Scaleway."
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
var __internal = {
|
|
99
|
-
resetCaches() {
|
|
100
|
-
cachedClient = null;
|
|
101
|
-
cachedConfig = null;
|
|
102
|
-
apiFactory = (client) => new Temv1alpha1.API(client);
|
|
103
|
-
},
|
|
104
|
-
setApiFactory(factory) {
|
|
105
|
-
apiFactory = factory;
|
|
106
|
-
},
|
|
107
|
-
setClient(client) {
|
|
108
|
-
cachedClient = client;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
// src/libs/email/utils.ts
|
|
113
|
-
var escapeHtml = (value) => value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
114
|
-
var formatMultilineHtml = (value) => escapeHtml(value).replaceAll(`
|
|
115
|
-
`, "<br />");
|
|
116
|
-
|
|
117
|
-
// src/libs/email/contact.ts
|
|
118
|
-
"use server";
|
|
119
|
-
var CONTACT_MISSING_CONFIG = "Email service is not configured. Please contact us directly at contact@contractspec.io.";
|
|
120
|
-
var CONTACT_SEND_ERROR = "Failed to send message. Please contact us directly at contact@contractspec.io.";
|
|
121
|
-
var submitContactForm = async (formData) => {
|
|
122
|
-
const name = (formData.get("name") ?? "").toString().trim();
|
|
123
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
124
|
-
const message = (formData.get("message") ?? "").toString().trim();
|
|
125
|
-
if (!email) {
|
|
126
|
-
return {
|
|
127
|
-
success: false,
|
|
128
|
-
text: "Please fill in all required fields."
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
const configResult = getEmailConfig();
|
|
132
|
-
if (!configResult.ok || !configResult.config) {
|
|
133
|
-
return {
|
|
134
|
-
success: false,
|
|
135
|
-
text: configResult.errorMessage ?? CONTACT_MISSING_CONFIG
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
const senderName = name || email;
|
|
139
|
-
const emailContentText = `
|
|
140
|
-
New contact form submission from ${senderName}
|
|
2
|
+
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(`
|
|
3
|
+
`,"<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=`
|
|
4
|
+
New contact form submission from ${l}
|
|
141
5
|
|
|
142
6
|
Contact Information:
|
|
143
|
-
- Name: ${
|
|
144
|
-
- Email: ${
|
|
7
|
+
- Name: ${t||"Not provided"}
|
|
8
|
+
- Email: ${i}
|
|
145
9
|
|
|
146
10
|
Message:
|
|
147
|
-
${
|
|
11
|
+
${o||"No message provided"}
|
|
148
12
|
|
|
149
13
|
---
|
|
150
14
|
Submitted via ContractSpec contact form
|
|
151
|
-
`.trim()
|
|
152
|
-
const emailContentHtml = `
|
|
15
|
+
`.trim(),p=`
|
|
153
16
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
154
17
|
<h1 style="color: #8b5cf6; margin-bottom: 12px;">New contact form submission</h1>
|
|
155
|
-
<p style="margin: 0 0 12px;">From ${
|
|
18
|
+
<p style="margin: 0 0 12px;">From ${a(l)}</p>
|
|
156
19
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Contact Information</h2>
|
|
157
20
|
<ul style="padding-left: 16px; line-height: 1.6; margin: 0 0 16px;">
|
|
158
|
-
<li>Name: ${
|
|
159
|
-
<li>Email: ${
|
|
21
|
+
<li>Name: ${a(t||"Not provided")}</li>
|
|
22
|
+
<li>Email: ${a(i)}</li>
|
|
160
23
|
</ul>
|
|
161
24
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Message</h2>
|
|
162
25
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;">
|
|
163
|
-
${
|
|
26
|
+
${o?r(o):"No message provided"}
|
|
164
27
|
</div>
|
|
165
28
|
<p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec contact form</p>
|
|
166
29
|
</div>
|
|
167
|
-
`;
|
|
168
|
-
const sendResult = await sendEmail(configResult.config, {
|
|
169
|
-
to: [configResult.config.teamInbox],
|
|
170
|
-
subject: `New Contact Form Message from ${senderName}`,
|
|
171
|
-
text: emailContentText,
|
|
172
|
-
html: emailContentHtml,
|
|
173
|
-
replyTo: email,
|
|
174
|
-
context: "contact-form"
|
|
175
|
-
});
|
|
176
|
-
if (!sendResult.success) {
|
|
177
|
-
return { success: false, text: CONTACT_SEND_ERROR };
|
|
178
|
-
}
|
|
179
|
-
return { success: true, text: "Message sent successfully!" };
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
// src/libs/email/newsletter.ts
|
|
183
|
-
"use server";
|
|
184
|
-
var NEWSLETTER_MISSING_CONFIG = "Newsletter service is not configured. Please try again later.";
|
|
185
|
-
var NEWSLETTER_SEND_ERROR = "Failed to subscribe. Please try again later or contact us directly.";
|
|
186
|
-
var subscribeToNewsletter = async (formData) => {
|
|
187
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
188
|
-
if (!email || !email.includes("@")) {
|
|
189
|
-
return {
|
|
190
|
-
success: false,
|
|
191
|
-
text: "Please enter a valid email address."
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
const configResult = getEmailConfig();
|
|
195
|
-
if (!configResult.ok || !configResult.config) {
|
|
196
|
-
return {
|
|
197
|
-
success: false,
|
|
198
|
-
text: configResult.errorMessage ?? NEWSLETTER_MISSING_CONFIG
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
const welcomeText = `
|
|
30
|
+
`;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=`
|
|
202
31
|
Welcome to ContractSpec!
|
|
203
32
|
|
|
204
33
|
Thanks for subscribing to our newsletter. You'll receive updates on:
|
|
@@ -216,8 +45,7 @@ ContractSpec Team
|
|
|
216
45
|
https://contractspec.io
|
|
217
46
|
|
|
218
47
|
Unsubscribe: Reply to this email with "unsubscribe"
|
|
219
|
-
`.trim()
|
|
220
|
-
const welcomeHtml = `
|
|
48
|
+
`.trim(),s=`
|
|
221
49
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
222
50
|
<h1 style="color: #8b5cf6;">Welcome to ContractSpec!</h1>
|
|
223
51
|
<p>Thanks for subscribing to our newsletter. You'll receive updates on:</p>
|
|
@@ -238,57 +66,12 @@ Unsubscribe: Reply to this email with "unsubscribe"
|
|
|
238
66
|
To unsubscribe, reply to this email with "unsubscribe"
|
|
239
67
|
</p>
|
|
240
68
|
</div>
|
|
241
|
-
`;
|
|
242
|
-
const userSend = await sendEmail(configResult.config, {
|
|
243
|
-
to: [{ email }],
|
|
244
|
-
subject: "Welcome to ContractSpec Newsletter",
|
|
245
|
-
text: welcomeText,
|
|
246
|
-
html: welcomeHtml,
|
|
247
|
-
context: "newsletter-welcome"
|
|
248
|
-
});
|
|
249
|
-
if (!userSend.success) {
|
|
250
|
-
return { success: false, text: NEWSLETTER_SEND_ERROR };
|
|
251
|
-
}
|
|
252
|
-
const teamNotificationText = `New newsletter subscription from: ${email}`;
|
|
253
|
-
const teamNotificationHtml = `
|
|
69
|
+
`;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=`
|
|
254
70
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
255
71
|
<p style="margin: 0 0 8px;">New newsletter subscription</p>
|
|
256
|
-
<p style="margin: 0;"><strong>Email:</strong> ${
|
|
72
|
+
<p style="margin: 0;"><strong>Email:</strong> ${r(t)}</p>
|
|
257
73
|
</div>
|
|
258
|
-
`;
|
|
259
|
-
const teamSend = await sendEmail(configResult.config, {
|
|
260
|
-
to: [configResult.config.teamInbox],
|
|
261
|
-
subject: `New Newsletter Subscription: ${email}`,
|
|
262
|
-
text: teamNotificationText,
|
|
263
|
-
html: teamNotificationHtml,
|
|
264
|
-
context: "newsletter-team-notification"
|
|
265
|
-
});
|
|
266
|
-
if (!teamSend.success) {
|
|
267
|
-
return { success: false, text: NEWSLETTER_SEND_ERROR };
|
|
268
|
-
}
|
|
269
|
-
return { success: true, text: "Successfully subscribed!" };
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
// src/libs/email/waitlist.ts
|
|
273
|
-
"use server";
|
|
274
|
-
var WAITLIST_MISSING_CONFIG = "Waitlist service is not configured. Please try again later.";
|
|
275
|
-
var WAITLIST_SEND_ERROR = "Failed to join waitlist. Please try again later or contact us directly.";
|
|
276
|
-
var joinWaitlist = async (formData) => {
|
|
277
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
278
|
-
if (!email || !email.includes("@")) {
|
|
279
|
-
return {
|
|
280
|
-
success: false,
|
|
281
|
-
text: "Please enter a valid email address."
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
const configResult = getEmailConfig();
|
|
285
|
-
if (!configResult.ok || !configResult.config) {
|
|
286
|
-
return {
|
|
287
|
-
success: false,
|
|
288
|
-
text: configResult.errorMessage ?? WAITLIST_MISSING_CONFIG
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
const waitlistText = `
|
|
74
|
+
`;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=`
|
|
292
75
|
You're on the waitlist!
|
|
293
76
|
|
|
294
77
|
Thanks for joining the ContractSpec waitlist. You're now in line for early access to:
|
|
@@ -311,8 +94,7 @@ ContractSpec Team
|
|
|
311
94
|
https://contractspec.io
|
|
312
95
|
|
|
313
96
|
To remove yourself from the waitlist, reply to this email with "remove"
|
|
314
|
-
`.trim()
|
|
315
|
-
const waitlistHtml = `
|
|
97
|
+
`.trim(),s=`
|
|
316
98
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
317
99
|
<h1 style="color: #8b5cf6;">You're on the waitlist!</h1>
|
|
318
100
|
<p>Thanks for joining the ContractSpec waitlist. You're now in line for early access to:</p>
|
|
@@ -338,72 +120,12 @@ To remove yourself from the waitlist, reply to this email with "remove"
|
|
|
338
120
|
To remove yourself from the waitlist, reply to this email with "remove"
|
|
339
121
|
</p>
|
|
340
122
|
</div>
|
|
341
|
-
`;
|
|
342
|
-
const userSend = await sendEmail(configResult.config, {
|
|
343
|
-
to: [{ email }],
|
|
344
|
-
subject: "You're on the ContractSpec waitlist!",
|
|
345
|
-
text: waitlistText,
|
|
346
|
-
html: waitlistHtml,
|
|
347
|
-
context: "waitlist-welcome"
|
|
348
|
-
});
|
|
349
|
-
if (!userSend.success) {
|
|
350
|
-
return { success: false, text: WAITLIST_SEND_ERROR };
|
|
351
|
-
}
|
|
352
|
-
const teamNotificationText = `New waitlist signup from: ${email}`;
|
|
353
|
-
const teamNotificationHtml = `
|
|
123
|
+
`;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=`
|
|
354
124
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
355
125
|
<p style="margin: 0 0 8px;">New waitlist signup</p>
|
|
356
|
-
<p style="margin: 0;"><strong>Email:</strong> ${
|
|
126
|
+
<p style="margin: 0;"><strong>Email:</strong> ${r(t)}</p>
|
|
357
127
|
</div>
|
|
358
|
-
`;
|
|
359
|
-
const teamSend = await sendEmail(configResult.config, {
|
|
360
|
-
to: [configResult.config.teamInbox],
|
|
361
|
-
subject: `New Waitlist Signup: ${email}`,
|
|
362
|
-
text: teamNotificationText,
|
|
363
|
-
html: teamNotificationHtml,
|
|
364
|
-
context: "waitlist-team-notification"
|
|
365
|
-
});
|
|
366
|
-
if (!teamSend.success) {
|
|
367
|
-
return { success: false, text: WAITLIST_SEND_ERROR };
|
|
368
|
-
}
|
|
369
|
-
return { success: true, text: "Successfully joined waitlist!" };
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
// src/libs/email/waitlist-application.ts
|
|
373
|
-
"use server";
|
|
374
|
-
var APPLICATION_MISSING_CONFIG = "Waitlist application service is not configured. Please try again later.";
|
|
375
|
-
var APPLICATION_SEND_ERROR = "Failed to submit application. Please try again later or contact us directly.";
|
|
376
|
-
var submitWaitlistApplication = async (formData) => {
|
|
377
|
-
const email = (formData.get("email") ?? "").toString().trim();
|
|
378
|
-
const name = (formData.get("name") ?? "").toString().trim();
|
|
379
|
-
const company = (formData.get("company") ?? "").toString().trim();
|
|
380
|
-
const role = (formData.get("role") ?? "").toString().trim();
|
|
381
|
-
const whatBuilding = (formData.get("whatBuilding") ?? "").toString().trim();
|
|
382
|
-
const whatSolving = (formData.get("whatSolving") ?? "").toString().trim();
|
|
383
|
-
const teamSize = (formData.get("teamSize") ?? "").toString().trim();
|
|
384
|
-
const timeline = (formData.get("timeline") ?? "").toString().trim();
|
|
385
|
-
const openToSessions = formData.get("openToSessions") === "on";
|
|
386
|
-
const okayWithCaseStudies = formData.get("okayWithCaseStudies") === "on";
|
|
387
|
-
if (!email || !email.includes("@")) {
|
|
388
|
-
return {
|
|
389
|
-
success: false,
|
|
390
|
-
text: "Please enter a valid email address."
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
if (!name || !whatBuilding || !whatSolving) {
|
|
394
|
-
return {
|
|
395
|
-
success: false,
|
|
396
|
-
text: "Please fill in all required fields."
|
|
397
|
-
};
|
|
398
|
-
}
|
|
399
|
-
const configResult = getEmailConfig();
|
|
400
|
-
if (!configResult.ok || !configResult.config) {
|
|
401
|
-
return {
|
|
402
|
-
success: false,
|
|
403
|
-
text: configResult.errorMessage ?? APPLICATION_MISSING_CONFIG
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
const applicantText = `
|
|
128
|
+
`;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=`
|
|
407
129
|
You're on the list.
|
|
408
130
|
|
|
409
131
|
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.
|
|
@@ -422,8 +144,7 @@ We're excited about the possibility of working together!
|
|
|
422
144
|
---
|
|
423
145
|
ContractSpec Team
|
|
424
146
|
https://contractspec.io
|
|
425
|
-
`.trim()
|
|
426
|
-
const applicantHtml = `
|
|
147
|
+
`.trim(),N=`
|
|
427
148
|
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
428
149
|
<h1 style="color: #8b5cf6;">You're on the list.</h1>
|
|
429
150
|
<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>
|
|
@@ -445,99 +166,61 @@ https://contractspec.io
|
|
|
445
166
|
<a href="https://contractspec.io" style="color: #8b5cf6;">contractspec.io</a>
|
|
446
167
|
</p>
|
|
447
168
|
</div>
|
|
448
|
-
`;
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
text: applicantText,
|
|
453
|
-
html: applicantHtml,
|
|
454
|
-
context: "waitlist-application-welcome"
|
|
455
|
-
});
|
|
456
|
-
if (!applicantSend.success) {
|
|
457
|
-
return { success: false, text: APPLICATION_SEND_ERROR };
|
|
458
|
-
}
|
|
459
|
-
const preferencesText = `
|
|
460
|
-
Open to 1:1 product/design sessions: ${openToSessions ? "Yes" : "No"}
|
|
461
|
-
Okay with anonymized case studies: ${okayWithCaseStudies ? "Yes" : "No"}
|
|
462
|
-
`.trim();
|
|
463
|
-
const teamEmailText = `
|
|
169
|
+
`;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=`
|
|
170
|
+
Open to 1:1 product/design sessions: ${h?"Yes":"No"}
|
|
171
|
+
Okay with anonymized case studies: ${x?"Yes":"No"}
|
|
172
|
+
`.trim(),T=`
|
|
464
173
|
New Design Partner Waitlist Application
|
|
465
174
|
|
|
466
175
|
Contact Information:
|
|
467
|
-
- Name: ${
|
|
468
|
-
- Email: ${
|
|
469
|
-
${
|
|
470
|
-
${
|
|
176
|
+
- Name: ${i}
|
|
177
|
+
- Email: ${t}
|
|
178
|
+
${o?`- Company/Project: ${o}`:""}
|
|
179
|
+
${s?`- Role: ${s}`:""}
|
|
471
180
|
|
|
472
181
|
Application Details:
|
|
473
182
|
- What are you building with AI today?
|
|
474
|
-
${
|
|
183
|
+
${l}
|
|
475
184
|
|
|
476
185
|
- What do you hope ContractSpec will solve for you?
|
|
477
|
-
${
|
|
186
|
+
${c}
|
|
478
187
|
|
|
479
|
-
- Team Size: ${
|
|
480
|
-
- Timeline: ${
|
|
188
|
+
- Team Size: ${p||"Not specified"}
|
|
189
|
+
- Timeline: ${f||"Not specified"}
|
|
481
190
|
|
|
482
191
|
Preferences:
|
|
483
|
-
- Open to 1:1 product/design sessions: ${
|
|
484
|
-
- Okay with anonymized case studies: ${
|
|
192
|
+
- Open to 1:1 product/design sessions: ${h?"Yes":"No"}
|
|
193
|
+
- Okay with anonymized case studies: ${x?"Yes":"No"}
|
|
485
194
|
|
|
486
195
|
---
|
|
487
196
|
Submitted via ContractSpec waitlist application form
|
|
488
|
-
`.trim()
|
|
489
|
-
const teamEmailHtml = `
|
|
197
|
+
`.trim(),R=`
|
|
490
198
|
<div style="font-family: sans-serif; max-width: 720px; margin: 0 auto;">
|
|
491
199
|
<h1 style="color: #8b5cf6;">New Design Partner Waitlist Application</h1>
|
|
492
200
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Contact Information</h2>
|
|
493
201
|
<ul style="padding-left: 16px; line-height: 1.6; margin: 0 0 16px;">
|
|
494
|
-
<li>Name: ${
|
|
495
|
-
<li>Email: ${
|
|
496
|
-
${
|
|
497
|
-
${
|
|
202
|
+
<li>Name: ${a(i)}</li>
|
|
203
|
+
<li>Email: ${a(t)}</li>
|
|
204
|
+
${o?`<li>Company/Project: ${a(o)}</li>`:""}
|
|
205
|
+
${s?`<li>Role: ${a(s)}</li>`:""}
|
|
498
206
|
</ul>
|
|
499
207
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Application Details</h2>
|
|
500
208
|
<p style="margin: 0 0 8px; font-weight: 600;">What are you building with AI today?</p>
|
|
501
209
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;">
|
|
502
|
-
${
|
|
210
|
+
${r(l)}
|
|
503
211
|
</div>
|
|
504
212
|
<p style="margin: 16px 0 8px; font-weight: 600;">What do you hope ContractSpec will solve for you?</p>
|
|
505
213
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;">
|
|
506
|
-
${
|
|
214
|
+
${r(c)}
|
|
507
215
|
</div>
|
|
508
216
|
<ul style="padding-left: 16px; line-height: 1.6; margin: 16px 0;">
|
|
509
|
-
<li>Team Size: ${
|
|
510
|
-
<li>Timeline: ${
|
|
217
|
+
<li>Team Size: ${a(p||"Not specified")}</li>
|
|
218
|
+
<li>Timeline: ${a(f||"Not specified")}</li>
|
|
511
219
|
</ul>
|
|
512
220
|
<h2 style="color: #8b5cf6; margin: 16px 0 8px;">Preferences</h2>
|
|
513
221
|
<div style="border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; line-height: 1.6;">
|
|
514
|
-
${
|
|
222
|
+
${r(I)}
|
|
515
223
|
</div>
|
|
516
224
|
<p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec waitlist application form</p>
|
|
517
225
|
</div>
|
|
518
|
-
`;
|
|
519
|
-
const teamSend = await sendEmail(configResult.config, {
|
|
520
|
-
to: [configResult.config.teamInbox],
|
|
521
|
-
subject: `New Design Partner Application: ${name} (${email})`,
|
|
522
|
-
text: teamEmailText,
|
|
523
|
-
html: teamEmailHtml,
|
|
524
|
-
replyTo: email,
|
|
525
|
-
context: "waitlist-application-team-notification"
|
|
526
|
-
});
|
|
527
|
-
if (!teamSend.success) {
|
|
528
|
-
return { success: false, text: APPLICATION_SEND_ERROR };
|
|
529
|
-
}
|
|
530
|
-
return {
|
|
531
|
-
success: true,
|
|
532
|
-
text: "Application submitted successfully!"
|
|
533
|
-
};
|
|
534
|
-
};
|
|
535
|
-
|
|
536
|
-
// src/libs/email.ts
|
|
537
|
-
"use server";
|
|
538
|
-
export {
|
|
539
|
-
subscribeToNewsletter,
|
|
540
|
-
submitWaitlistApplication,
|
|
541
|
-
submitContactForm,
|
|
542
|
-
joinWaitlist
|
|
543
|
-
};
|
|
226
|
+
`;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,64 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import posthog from "posthog-js";
|
|
4
|
-
var analyticsEventNames = {
|
|
5
|
-
CTA_INSTALL_CLICK: "cta_install_click",
|
|
6
|
-
CTA_STUDIO_CLICK: "cta_studio_click",
|
|
7
|
-
DOCS_QUICKSTART_VIEW: "docs_quickstart_view",
|
|
8
|
-
COPY_COMMAND_CLICK: "copy_command_click",
|
|
9
|
-
EXAMPLE_REPO_OPEN: "example_repo_open"
|
|
10
|
-
};
|
|
11
|
-
var posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
12
|
-
var posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
13
|
-
var shouldCaptureAnalytics = () => {
|
|
14
|
-
if (typeof window === "undefined")
|
|
15
|
-
return false;
|
|
16
|
-
const nav = window.navigator;
|
|
17
|
-
const dntWindow = window;
|
|
18
|
-
const dnt = nav.doNotTrack ?? nav.msDoNotTrack ?? dntWindow.doNotTrack;
|
|
19
|
-
return dnt !== "1" && dnt !== "yes";
|
|
20
|
-
};
|
|
21
|
-
function initPosthog() {
|
|
22
|
-
if (typeof window === "undefined")
|
|
23
|
-
return;
|
|
24
|
-
if (!posthogKey) {
|
|
25
|
-
console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (!shouldCaptureAnalytics())
|
|
29
|
-
return;
|
|
30
|
-
const isDev = false;
|
|
31
|
-
posthog.init(posthogKey, {
|
|
32
|
-
api_host: posthogHost,
|
|
33
|
-
autocapture: !isDev,
|
|
34
|
-
capture_dead_clicks: !isDev,
|
|
35
|
-
capture_performance: !isDev,
|
|
36
|
-
capture_pageview: !isDev,
|
|
37
|
-
capture_heatmaps: !isDev,
|
|
38
|
-
capture_exceptions: !isDev,
|
|
39
|
-
debug: false
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
function captureAnalyticsEvent(event, properties) {
|
|
43
|
-
if (!posthogKey)
|
|
44
|
-
return;
|
|
45
|
-
if (!shouldCaptureAnalytics())
|
|
46
|
-
return;
|
|
47
|
-
try {
|
|
48
|
-
const globalPosthog = globalThis.posthog;
|
|
49
|
-
const instance = globalPosthog ?? posthog;
|
|
50
|
-
instance?.capture?.(event, properties);
|
|
51
|
-
} catch {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
var client_default = posthog;
|
|
56
|
-
export {
|
|
57
|
-
posthogKey,
|
|
58
|
-
posthogHost,
|
|
59
|
-
posthog,
|
|
60
|
-
initPosthog,
|
|
61
|
-
client_default as default,
|
|
62
|
-
captureAnalyticsEvent,
|
|
63
|
-
analyticsEventNames
|
|
64
|
-
};
|
|
2
|
+
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,24 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import { PostHog } from "posthog-react-native";
|
|
4
|
-
var posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
5
|
-
var posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
6
|
-
function initPosthog() {
|
|
7
|
-
const posthogKey2 = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
8
|
-
const posthogHost2 = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
9
|
-
if (!posthogKey2) {
|
|
10
|
-
console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");
|
|
11
|
-
throw new Error("NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");
|
|
12
|
-
}
|
|
13
|
-
const posthog = new PostHog(posthogKey2, {
|
|
14
|
-
host: posthogHost2
|
|
15
|
-
});
|
|
16
|
-
return posthog;
|
|
17
|
-
}
|
|
18
|
-
var posthog = initPosthog();
|
|
19
|
-
export {
|
|
20
|
-
posthogKey,
|
|
21
|
-
posthogHost,
|
|
22
|
-
posthog,
|
|
23
|
-
initPosthog
|
|
24
|
-
};
|
|
2
|
+
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,14 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import { PostHog } from "posthog-node";
|
|
4
|
-
var posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;
|
|
5
|
-
var posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.posthog.com";
|
|
6
|
-
var posthogServer = posthogKey ? new PostHog(posthogKey, {
|
|
7
|
-
host: posthogHost,
|
|
8
|
-
flushAt: 1,
|
|
9
|
-
flushInterval: 0
|
|
10
|
-
}) : null;
|
|
11
|
-
var server_default = posthogServer;
|
|
12
|
-
export {
|
|
13
|
-
server_default as default
|
|
14
|
-
};
|
|
2
|
+
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,19 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
var PRICING_EXAMPLES = {
|
|
4
|
-
free: {
|
|
5
|
-
regenerationsPerMonth: 200,
|
|
6
|
-
aiActionsPerMonth: 100,
|
|
7
|
-
projects: 1
|
|
8
|
-
},
|
|
9
|
-
builder: {
|
|
10
|
-
regenerationsPerMonthHint: "1,000\u20132,000+",
|
|
11
|
-
aiActionsPerMonthHint: "1,000+"
|
|
12
|
-
},
|
|
13
|
-
team: {
|
|
14
|
-
description: "Higher limits + cheaper per-regen at scale"
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
export {
|
|
18
|
-
PRICING_EXAMPLES
|
|
19
|
-
};
|
|
2
|
+
var e={free:{regenerationsPerMonth:200,aiActionsPerMonth:100,projects:1},builder:{regenerationsPerMonthHint:"1,000\u20132,000+",aiActionsPerMonthHint:"1,000+"},team:{description:"Higher limits + cheaper per-regen at scale"}};export{e as PRICING_EXAMPLES};
|