@contractspec/bundle.library 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +47 -47
- package/CHANGELOG.md +43 -0
- package/dist/components/docs/DocsIndexPage.js +3 -3
- package/dist/components/docs/ecosystem/TemplatesPage.js +6 -6
- package/dist/components/docs/ecosystem/index.js +6 -6
- package/dist/components/docs/generated/docs-index.generated.d.ts +6 -6
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +6 -6
- package/dist/components/docs/getting-started/index.js +6 -6
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +6 -6
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -6
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +6 -6
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +6 -6
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +6 -6
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +6 -6
- package/dist/components/docs/guides/index.js +18 -18
- package/dist/components/docs/index.js +162 -470
- package/dist/components/docs/manifesto/ManifestoPage.js +2 -2
- package/dist/components/docs/shared/StudioPrompt.js +4 -4
- package/dist/components/docs/studio/StudioBYOKPage.js +14 -68
- package/dist/components/docs/studio/StudioDeploymentsPage.js +14 -89
- package/dist/components/docs/studio/StudioGettingStartedPage.js +14 -82
- package/dist/components/docs/studio/StudioIntegrationsPage.js +14 -60
- package/dist/components/docs/studio/StudioOverviewPage.js +62 -32
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +14 -109
- package/dist/components/docs/studio/index.js +131 -439
- package/dist/index.js +162 -470
- package/dist/node/components/docs/DocsIndexPage.js +3 -3
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +6 -6
- package/dist/node/components/docs/ecosystem/index.js +6 -6
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +6 -6
- package/dist/node/components/docs/getting-started/index.js +6 -6
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +6 -6
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -6
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +6 -6
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +6 -6
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +6 -6
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +6 -6
- package/dist/node/components/docs/guides/index.js +18 -18
- package/dist/node/components/docs/index.js +162 -470
- package/dist/node/components/docs/manifesto/ManifestoPage.js +2 -2
- package/dist/node/components/docs/shared/StudioPrompt.js +4 -4
- package/dist/node/components/docs/studio/StudioBYOKPage.js +14 -68
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +14 -89
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +14 -82
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +14 -60
- package/dist/node/components/docs/studio/StudioOverviewPage.js +62 -32
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +14 -109
- package/dist/node/components/docs/studio/index.js +131 -439
- package/dist/node/index.js +162 -470
- package/package.json +18 -18
- package/src/components/docs/DocsIndexPage.tsx +3 -3
- package/src/components/docs/ecosystem/TemplatesPage.tsx +2 -2
- package/src/components/docs/generated/docs-index._common.json +40 -211
- package/src/components/docs/generated/docs-index.agent-console.json +1 -1
- package/src/components/docs/generated/docs-index.ai-chat.json +1 -1
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +1 -1
- package/src/components/docs/generated/docs-index.app-config.json +1 -1
- package/src/components/docs/generated/docs-index.audit-trail.json +1 -1
- package/src/components/docs/generated/docs-index.crm-pipeline.json +1 -1
- package/src/components/docs/generated/docs-index.feature-flags.json +1 -1
- package/src/components/docs/generated/docs-index.files.json +1 -1
- package/src/components/docs/generated/docs-index.generated.ts +7 -7
- package/src/components/docs/generated/docs-index.identity-rbac.json +1 -1
- package/src/components/docs/generated/docs-index.integration-hub.json +1 -1
- package/src/components/docs/generated/docs-index.jobs.json +1 -1
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey.json +1 -1
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +1 -1
- package/src/components/docs/generated/docs-index.manifest.json +1 -1
- package/src/components/docs/generated/docs-index.marketplace.json +1 -1
- package/src/components/docs/generated/docs-index.meeting-recorder.json +1 -1
- package/src/components/docs/generated/docs-index.metrics.json +1 -1
- package/src/components/docs/generated/docs-index.notifications.json +1 -1
- package/src/components/docs/generated/docs-index.openbanking.json +1 -1
- package/src/components/docs/generated/docs-index.platform-integrations.json +1 -1
- package/src/components/docs/generated/docs-index.platform-knowledge.json +1 -1
- package/src/components/docs/generated/docs-index.pocket-family-office.json +1 -1
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +1 -1
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +1 -1
- package/src/components/docs/generated/docs-index.service-business-os.json +1 -1
- package/src/components/docs/generated/docs-index.team-hub.json +1 -1
- package/src/components/docs/generated/docs-index.unknown.json +1 -1
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +1 -1
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +1 -1
- package/src/components/docs/generated/docs-index.workflow-system.json +1 -1
- package/src/components/docs/generated/docs-index.workspace-cli.json +1 -1
- package/src/components/docs/getting-started/DeveloperToolsPage.tsx +6 -6
- package/src/components/docs/guides/GuideCIDiffGatingPage.tsx +2 -2
- package/src/components/docs/guides/GuideContractTypesPage.tsx +2 -2
- package/src/components/docs/guides/GuideDocsPipelinePage.tsx +2 -2
- package/src/components/docs/guides/GuideGenerateDocsClientsSchemasPage.tsx +2 -2
- package/src/components/docs/guides/GuideImportExistingCodebasesPage.tsx +2 -2
- package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +2 -2
- package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +2 -2
- package/src/components/docs/manifesto/ManifestoPage.tsx +2 -2
- package/src/components/docs/shared/StudioPrompt.tsx +4 -4
- package/src/components/docs/studio/StudioBYOKPage.tsx +9 -54
- package/src/components/docs/studio/StudioDeploymentsPage.tsx +9 -70
- package/src/components/docs/studio/StudioGettingStartedPage.tsx +9 -66
- package/src/components/docs/studio/StudioIntegrationsPage.tsx +9 -47
- package/src/components/docs/studio/StudioOverviewPage.tsx +53 -41
- package/src/components/docs/studio/StudioVisualBuilderPage.tsx +9 -72
package/dist/index.js
CHANGED
|
@@ -109,7 +109,7 @@ function DocsIndexPage() {
|
|
|
109
109
|
}, undefined, true, undefined, this)
|
|
110
110
|
}, undefined, false, undefined, this),
|
|
111
111
|
/* @__PURE__ */ jsxDEV(Link, {
|
|
112
|
-
href: "/studio",
|
|
112
|
+
href: "/docs/studio",
|
|
113
113
|
className: "card-subtle group space-y-3 p-6 transition-colors hover:border-violet-500/50",
|
|
114
114
|
children: /* @__PURE__ */ jsxDEV("div", {
|
|
115
115
|
className: "flex items-start justify-between",
|
|
@@ -118,11 +118,11 @@ function DocsIndexPage() {
|
|
|
118
118
|
children: [
|
|
119
119
|
/* @__PURE__ */ jsxDEV("h3", {
|
|
120
120
|
className: "text-lg font-bold transition-colors group-hover:text-violet-400",
|
|
121
|
-
children: "Studio
|
|
121
|
+
children: "Studio"
|
|
122
122
|
}, undefined, false, undefined, this),
|
|
123
123
|
/* @__PURE__ */ jsxDEV("p", {
|
|
124
124
|
className: "text-muted-foreground mt-1 text-sm",
|
|
125
|
-
children: "
|
|
125
|
+
children: "AI-powered product decision engine for spec-first teams."
|
|
126
126
|
}, undefined, false, undefined, this)
|
|
127
127
|
]
|
|
128
128
|
}, undefined, true, undefined, this),
|
|
@@ -5315,10 +5315,10 @@ export const PrivateRegistryResolver: RegistryResolverPlugin = {
|
|
|
5315
5315
|
import Link15 from "@contractspec/lib.ui-link";
|
|
5316
5316
|
import { jsxDEV as jsxDEV22 } from "react/jsx-dev-runtime";
|
|
5317
5317
|
function StudioPrompt({
|
|
5318
|
-
title = "
|
|
5319
|
-
body = "ContractSpec Studio
|
|
5320
|
-
ctaLabel = "
|
|
5321
|
-
href = "
|
|
5318
|
+
title = "Want to turn product signals into spec-first deliverables?",
|
|
5319
|
+
body = "ContractSpec Studio ingests evidence from meetings, support, analytics, docs, and code, then compiles decisions into spec diffs and task packs.",
|
|
5320
|
+
ctaLabel = "Try Studio",
|
|
5321
|
+
href = "https://app.contractspec.studio"
|
|
5322
5322
|
}) {
|
|
5323
5323
|
return /* @__PURE__ */ jsxDEV22("div", {
|
|
5324
5324
|
className: "card-subtle space-y-3 p-6",
|
|
@@ -5428,8 +5428,8 @@ bun add @contractspec/integration.markdown-generator`
|
|
|
5428
5428
|
]
|
|
5429
5429
|
}, undefined, true, undefined, this),
|
|
5430
5430
|
/* @__PURE__ */ jsxDEV23(StudioPrompt, {
|
|
5431
|
-
title: "Need
|
|
5432
|
-
body: "Studio
|
|
5431
|
+
title: "Need evidence-backed template iteration?",
|
|
5432
|
+
body: "Studio helps teams prioritize template changes from real product signals and export implementation-ready task packs."
|
|
5433
5433
|
}, undefined, false, undefined, this),
|
|
5434
5434
|
/* @__PURE__ */ jsxDEV23("div", {
|
|
5435
5435
|
className: "flex items-center gap-4 pt-4",
|
|
@@ -6384,14 +6384,14 @@ function DeveloperToolsPage() {
|
|
|
6384
6384
|
},
|
|
6385
6385
|
{
|
|
6386
6386
|
name: "ContractSpec Studio",
|
|
6387
|
-
href: "https://
|
|
6388
|
-
description: "
|
|
6387
|
+
href: "https://app.contractspec.studio",
|
|
6388
|
+
description: "AI-powered product decision engine that turns product signals into spec-first deliverables.",
|
|
6389
6389
|
icon: Layers,
|
|
6390
|
-
status: "
|
|
6390
|
+
status: "available",
|
|
6391
6391
|
highlights: [
|
|
6392
|
-
"
|
|
6393
|
-
"
|
|
6394
|
-
"
|
|
6392
|
+
"Evidence-to-decision loop",
|
|
6393
|
+
"Compiled spec diffs and task packs",
|
|
6394
|
+
"Exports to Linear, Jira, Notion, and GitHub"
|
|
6395
6395
|
]
|
|
6396
6396
|
},
|
|
6397
6397
|
{
|
|
@@ -7963,8 +7963,8 @@ bun run validate`
|
|
|
7963
7963
|
]
|
|
7964
7964
|
}, undefined, true, undefined, this),
|
|
7965
7965
|
/* @__PURE__ */ jsxDEV34(StudioPrompt, {
|
|
7966
|
-
title: "Need
|
|
7967
|
-
body: "Studio
|
|
7966
|
+
title: "Need continuous checks tied to outcomes?",
|
|
7967
|
+
body: "Studio closes the loop with post-change verification and learning dividends that improve future decisions."
|
|
7968
7968
|
}, undefined, false, undefined, this)
|
|
7969
7969
|
]
|
|
7970
7970
|
}, undefined, true, undefined, this),
|
|
@@ -8670,8 +8670,8 @@ capabilityRegistry.register(UserManagementCapability);`
|
|
|
8670
8670
|
]
|
|
8671
8671
|
}, undefined, true, undefined, this),
|
|
8672
8672
|
/* @__PURE__ */ jsxDEV35(StudioPrompt, {
|
|
8673
|
-
title: "
|
|
8674
|
-
body: "Studio
|
|
8673
|
+
title: "Need to decide which contract should change next?",
|
|
8674
|
+
body: "Studio uses evidence and focus constraints to generate decision briefs, patch intents, and execution-ready task packs."
|
|
8675
8675
|
}, undefined, false, undefined, this)
|
|
8676
8676
|
]
|
|
8677
8677
|
}, undefined, true, undefined, this),
|
|
@@ -8864,8 +8864,8 @@ export default async function Page({ params }: { params: { slug?: string[] } })
|
|
|
8864
8864
|
]
|
|
8865
8865
|
}, undefined, true, undefined, this),
|
|
8866
8866
|
/* @__PURE__ */ jsxDEV36(StudioPrompt, {
|
|
8867
|
-
title: "Need
|
|
8868
|
-
body: "Studio
|
|
8867
|
+
title: "Need decision-to-export automation?",
|
|
8868
|
+
body: "Studio exports evidence-backed spec changes and task packs to Linear, Jira, Notion, and GitHub."
|
|
8869
8869
|
}, undefined, false, undefined, this)
|
|
8870
8870
|
]
|
|
8871
8871
|
}, undefined, true, undefined, this),
|
|
@@ -9044,8 +9044,8 @@ contractspec openapi export --registry ./src/contracts/registry.ts --out ./gener
|
|
|
9044
9044
|
]
|
|
9045
9045
|
}, undefined, true, undefined, this),
|
|
9046
9046
|
/* @__PURE__ */ jsxDEV37(StudioPrompt, {
|
|
9047
|
-
title: "Want
|
|
9048
|
-
body: "Studio
|
|
9047
|
+
title: "Want exports tied to product decisions?",
|
|
9048
|
+
body: "Studio compiles approved changes into deliverables and pushes them to your execution stack with full evidence context."
|
|
9049
9049
|
}, undefined, false, undefined, this)
|
|
9050
9050
|
]
|
|
9051
9051
|
}, undefined, true, undefined, this),
|
|
@@ -9891,8 +9891,8 @@ installOp(registry, CreateUserCommand, async (input) => {
|
|
|
9891
9891
|
]
|
|
9892
9892
|
}, undefined, true, undefined, this),
|
|
9893
9893
|
/* @__PURE__ */ jsxDEV38(StudioPrompt, {
|
|
9894
|
-
title: "Want
|
|
9895
|
-
body: "Studio
|
|
9894
|
+
title: "Want evidence-driven migration priorities?",
|
|
9895
|
+
body: "Studio clusters product signals into scored patterns, then proposes spec-first change cards for the highest-impact areas."
|
|
9896
9896
|
}, undefined, false, undefined, this)
|
|
9897
9897
|
]
|
|
9898
9898
|
}, undefined, true, undefined, this),
|
|
@@ -10178,8 +10178,8 @@ contractspec examples validate --repo-root .`
|
|
|
10178
10178
|
]
|
|
10179
10179
|
}, undefined, true, undefined, this),
|
|
10180
10180
|
/* @__PURE__ */ jsxDEV39(StudioPrompt, {
|
|
10181
|
-
title: "
|
|
10182
|
-
body: "Studio
|
|
10181
|
+
title: "Want real product evidence behind endpoint changes?",
|
|
10182
|
+
body: "Studio correlates meetings, support, analytics, and code signals before compiling endpoint decisions into spec diffs."
|
|
10183
10183
|
}, undefined, false, undefined, this)
|
|
10184
10184
|
]
|
|
10185
10185
|
}, undefined, true, undefined, this),
|
|
@@ -10402,8 +10402,8 @@ bun run validate`
|
|
|
10402
10402
|
]
|
|
10403
10403
|
}, undefined, true, undefined, this),
|
|
10404
10404
|
/* @__PURE__ */ jsxDEV40(StudioPrompt, {
|
|
10405
|
-
title: "Need
|
|
10406
|
-
body: "Studio
|
|
10405
|
+
title: "Need validation tied to real outcomes?",
|
|
10406
|
+
body: "Studio links checks to evidence, focus decisions, and post-release verification so specs evolve with product truth."
|
|
10407
10407
|
}, undefined, false, undefined, this)
|
|
10408
10408
|
]
|
|
10409
10409
|
}, undefined, true, undefined, this),
|
|
@@ -27530,9 +27530,9 @@ function ManifestoPage() {
|
|
|
27530
27530
|
children: "Install OSS Core"
|
|
27531
27531
|
}, undefined, false, undefined, this),
|
|
27532
27532
|
/* @__PURE__ */ jsxDEV114("a", {
|
|
27533
|
-
href: "
|
|
27533
|
+
href: "https://app.contractspec.studio",
|
|
27534
27534
|
className: "btn-ghost",
|
|
27535
|
-
children: "
|
|
27535
|
+
children: "Try Studio"
|
|
27536
27536
|
}, undefined, false, undefined, this)
|
|
27537
27537
|
]
|
|
27538
27538
|
}, undefined, true, undefined, this)
|
|
@@ -27545,529 +27545,221 @@ function ManifestoPage() {
|
|
|
27545
27545
|
// src/components/docs/studio/StudioOverviewPage.tsx
|
|
27546
27546
|
import Link96 from "@contractspec/lib.ui-link";
|
|
27547
27547
|
import { jsxDEV as jsxDEV115 } from "react/jsx-dev-runtime";
|
|
27548
|
-
var
|
|
27548
|
+
var coreLoop = [
|
|
27549
|
+
{
|
|
27550
|
+
title: "Evidence",
|
|
27551
|
+
body: "Ingest product signals from meetings, support, analytics, code reviews, docs, and Slack."
|
|
27552
|
+
},
|
|
27549
27553
|
{
|
|
27550
|
-
title: "
|
|
27551
|
-
body: "
|
|
27552
|
-
href: "/docs/studio/getting-started"
|
|
27554
|
+
title: "Correlation",
|
|
27555
|
+
body: "Cluster signals into scored patterns with hybrid heuristics plus AI signature extraction."
|
|
27553
27556
|
},
|
|
27554
27557
|
{
|
|
27555
|
-
title: "
|
|
27556
|
-
body: "
|
|
27557
|
-
href: "/docs/studio/visual-builder"
|
|
27558
|
+
title: "Decision",
|
|
27559
|
+
body: "Create timeboxed focus zones and evidence-backed briefs with citation chains."
|
|
27558
27560
|
},
|
|
27559
27561
|
{
|
|
27560
|
-
title: "
|
|
27561
|
-
body: "
|
|
27562
|
-
href: "/docs/studio/deployments"
|
|
27562
|
+
title: "Change",
|
|
27563
|
+
body: "Compile patch intents into spec diffs, deterministic impact reports, and task packs."
|
|
27563
27564
|
},
|
|
27564
27565
|
{
|
|
27565
|
-
title: "
|
|
27566
|
-
body: "
|
|
27567
|
-
href: "/docs/studio/byok"
|
|
27566
|
+
title: "Export",
|
|
27567
|
+
body: "Push deliverables to Linear, Jira, Notion, and GitHub with full decision context."
|
|
27568
27568
|
},
|
|
27569
27569
|
{
|
|
27570
|
-
title: "
|
|
27571
|
-
body: "
|
|
27572
|
-
href: "/docs/studio/integrations"
|
|
27570
|
+
title: "Check + Autopilot",
|
|
27571
|
+
body: "Verify outcomes, capture learning dividends, and automate safely with policy gates."
|
|
27573
27572
|
}
|
|
27574
27573
|
];
|
|
27575
27574
|
function StudioOverviewPage() {
|
|
27576
27575
|
return /* @__PURE__ */ jsxDEV115("main", {
|
|
27577
|
-
className: "space-y-
|
|
27576
|
+
className: "space-y-12 py-16",
|
|
27578
27577
|
children: [
|
|
27579
27578
|
/* @__PURE__ */ jsxDEV115("section", {
|
|
27580
|
-
className: "section-padding",
|
|
27579
|
+
className: "section-padding space-y-4",
|
|
27581
27580
|
children: [
|
|
27582
27581
|
/* @__PURE__ */ jsxDEV115("p", {
|
|
27583
27582
|
className: "text-xs font-semibold tracking-[0.3em] text-violet-400 uppercase",
|
|
27584
|
-
children: "Studio
|
|
27583
|
+
children: "ContractSpec Studio"
|
|
27585
27584
|
}, undefined, false, undefined, this),
|
|
27586
27585
|
/* @__PURE__ */ jsxDEV115("h1", {
|
|
27587
|
-
className: "
|
|
27588
|
-
children: "
|
|
27586
|
+
className: "text-4xl font-bold md:text-5xl",
|
|
27587
|
+
children: "Compiler for product truth"
|
|
27589
27588
|
}, undefined, false, undefined, this),
|
|
27590
27589
|
/* @__PURE__ */ jsxDEV115("p", {
|
|
27591
|
-
className: "text-muted-foreground mt-4 max-w-3xl text-lg",
|
|
27592
|
-
children: "ContractSpec Studio pairs a visual builder with managed infrastructure. These guides keep teams aligned\u2014especially when engineers and operators share the same console."
|
|
27593
|
-
}, undefined, false, undefined, this)
|
|
27594
|
-
]
|
|
27595
|
-
}, undefined, true, undefined, this),
|
|
27596
|
-
/* @__PURE__ */ jsxDEV115("section", {
|
|
27597
|
-
className: "section-padding grid gap-4",
|
|
27598
|
-
children: sections.map((section) => /* @__PURE__ */ jsxDEV115(Link96, {
|
|
27599
|
-
href: section.href,
|
|
27600
|
-
className: "card-subtle group space-y-2 p-6 transition hover:border-violet-500/40",
|
|
27601
|
-
children: [
|
|
27602
|
-
/* @__PURE__ */ jsxDEV115("h2", {
|
|
27603
|
-
className: "text-xl font-semibold group-hover:text-violet-400",
|
|
27604
|
-
children: section.title
|
|
27605
|
-
}, undefined, false, undefined, this),
|
|
27606
|
-
/* @__PURE__ */ jsxDEV115("p", {
|
|
27607
|
-
className: "text-muted-foreground text-sm",
|
|
27608
|
-
children: section.body
|
|
27609
|
-
}, undefined, false, undefined, this)
|
|
27610
|
-
]
|
|
27611
|
-
}, section.href, true, undefined, this))
|
|
27612
|
-
}, undefined, false, undefined, this)
|
|
27613
|
-
]
|
|
27614
|
-
}, undefined, true, undefined, this);
|
|
27615
|
-
}
|
|
27616
|
-
|
|
27617
|
-
// src/components/docs/studio/StudioGettingStartedPage.tsx
|
|
27618
|
-
import { jsxDEV as jsxDEV116 } from "react/jsx-dev-runtime";
|
|
27619
|
-
var steps = [
|
|
27620
|
-
{
|
|
27621
|
-
title: "1. Create a Studio workspace",
|
|
27622
|
-
body: "Sign in, pick \u201CStudio managed\u201D as product, and invite teammates. We provision the workspace plus default shared environments."
|
|
27623
|
-
},
|
|
27624
|
-
{
|
|
27625
|
-
title: "2. Add your first project",
|
|
27626
|
-
body: "Click \u201CNew project\u201D, choose Starter tier, and keep BYOK disabled for the trial. You can upgrade later."
|
|
27627
|
-
},
|
|
27628
|
-
{
|
|
27629
|
-
title: "3. Author a spec",
|
|
27630
|
-
body: "Use the Visual Builder or Spec Editor. Pick \u201CCapability\u201D as type and describe the operation (e.g., capture donation)."
|
|
27631
|
-
},
|
|
27632
|
-
{
|
|
27633
|
-
title: "4. Deploy to shared infra",
|
|
27634
|
-
body: "Open the deployment panel, select Development, and hit Deploy. Studio provisions the runtime slice automatically."
|
|
27635
|
-
},
|
|
27636
|
-
{
|
|
27637
|
-
title: "5. Wire integrations",
|
|
27638
|
-
body: "From Integration Hub, connect one provider (e.g., PostHog). Starter plan supports two providers."
|
|
27639
|
-
}
|
|
27640
|
-
];
|
|
27641
|
-
function StudioGettingStartedPage() {
|
|
27642
|
-
return /* @__PURE__ */ jsxDEV116("main", {
|
|
27643
|
-
className: "space-y-12 py-12",
|
|
27644
|
-
children: [
|
|
27645
|
-
/* @__PURE__ */ jsxDEV116("header", {
|
|
27646
|
-
className: "space-y-3",
|
|
27647
|
-
children: [
|
|
27648
|
-
/* @__PURE__ */ jsxDEV116("p", {
|
|
27649
|
-
className: "text-xs font-semibold tracking-[0.3em] text-violet-400 uppercase",
|
|
27650
|
-
children: "Getting started"
|
|
27651
|
-
}, undefined, false, undefined, this),
|
|
27652
|
-
/* @__PURE__ */ jsxDEV116("h1", {
|
|
27653
|
-
className: "text-4xl font-bold",
|
|
27654
|
-
children: "Launch your first Studio project"
|
|
27655
|
-
}, undefined, false, undefined, this),
|
|
27656
|
-
/* @__PURE__ */ jsxDEV116("p", {
|
|
27657
27590
|
className: "text-muted-foreground max-w-3xl text-lg",
|
|
27658
|
-
children: "
|
|
27591
|
+
children: "ContractSpec Studio is the AI-powered product decision engine built on top of ContractSpec. It turns product signals into spec-first deliverables through a deterministic loop:"
|
|
27592
|
+
}, undefined, false, undefined, this),
|
|
27593
|
+
/* @__PURE__ */ jsxDEV115("p", {
|
|
27594
|
+
className: "text-muted-foreground font-mono text-sm",
|
|
27595
|
+
children: "Evidence -> Correlation -> Decision -> Change -> Export -> Check -> Notify -> Autopilot"
|
|
27659
27596
|
}, undefined, false, undefined, this)
|
|
27660
27597
|
]
|
|
27661
27598
|
}, undefined, true, undefined, this),
|
|
27662
|
-
/* @__PURE__ */
|
|
27663
|
-
className: "grid gap-4",
|
|
27664
|
-
children:
|
|
27599
|
+
/* @__PURE__ */ jsxDEV115("section", {
|
|
27600
|
+
className: "section-padding grid gap-4 md:grid-cols-2",
|
|
27601
|
+
children: coreLoop.map((step) => /* @__PURE__ */ jsxDEV115("article", {
|
|
27665
27602
|
className: "card-subtle space-y-2 p-6",
|
|
27666
27603
|
children: [
|
|
27667
|
-
/* @__PURE__ */
|
|
27604
|
+
/* @__PURE__ */ jsxDEV115("h2", {
|
|
27668
27605
|
className: "text-xl font-semibold",
|
|
27669
27606
|
children: step.title
|
|
27670
27607
|
}, undefined, false, undefined, this),
|
|
27671
|
-
/* @__PURE__ */
|
|
27608
|
+
/* @__PURE__ */ jsxDEV115("p", {
|
|
27672
27609
|
className: "text-muted-foreground text-sm",
|
|
27673
27610
|
children: step.body
|
|
27674
27611
|
}, undefined, false, undefined, this)
|
|
27675
27612
|
]
|
|
27676
27613
|
}, step.title, true, undefined, this))
|
|
27677
27614
|
}, undefined, false, undefined, this),
|
|
27678
|
-
/* @__PURE__ */
|
|
27679
|
-
className: "space-y-4",
|
|
27615
|
+
/* @__PURE__ */ jsxDEV115("section", {
|
|
27616
|
+
className: "section-padding card-subtle space-y-4 p-6",
|
|
27680
27617
|
children: [
|
|
27681
|
-
/* @__PURE__ */
|
|
27618
|
+
/* @__PURE__ */ jsxDEV115("h2", {
|
|
27682
27619
|
className: "text-2xl font-semibold",
|
|
27683
|
-
children: "
|
|
27620
|
+
children: "Use Studio now"
|
|
27684
27621
|
}, undefined, false, undefined, this),
|
|
27685
|
-
/* @__PURE__ */
|
|
27622
|
+
/* @__PURE__ */ jsxDEV115("p", {
|
|
27686
27623
|
className: "text-muted-foreground text-sm",
|
|
27687
|
-
children: "
|
|
27624
|
+
children: "Studio is live and runs the same spec-first grammar as the OSS compiler. Keep your contracts, keep your code, and add a full decision-to-change workflow on top."
|
|
27688
27625
|
}, undefined, false, undefined, this),
|
|
27689
|
-
/* @__PURE__ */
|
|
27690
|
-
className: "
|
|
27691
|
-
children:
|
|
27692
|
-
|
|
27693
|
-
|
|
27694
|
-
|
|
27695
|
-
|
|
27696
|
-
|
|
27697
|
-
|
|
27698
|
-
|
|
27699
|
-
|
|
27700
|
-
|
|
27701
|
-
|
|
27702
|
-
|
|
27626
|
+
/* @__PURE__ */ jsxDEV115("div", {
|
|
27627
|
+
className: "flex flex-wrap gap-3",
|
|
27628
|
+
children: [
|
|
27629
|
+
/* @__PURE__ */ jsxDEV115(Link96, {
|
|
27630
|
+
href: "https://app.contractspec.studio",
|
|
27631
|
+
className: "btn-primary",
|
|
27632
|
+
children: "Try Studio"
|
|
27633
|
+
}, undefined, false, undefined, this),
|
|
27634
|
+
/* @__PURE__ */ jsxDEV115(Link96, {
|
|
27635
|
+
href: "https://app.contractspec.studio/docs",
|
|
27636
|
+
className: "btn-ghost",
|
|
27637
|
+
children: "Read Studio docs"
|
|
27638
|
+
}, undefined, false, undefined, this)
|
|
27639
|
+
]
|
|
27640
|
+
}, undefined, true, undefined, this)
|
|
27703
27641
|
]
|
|
27704
27642
|
}, undefined, true, undefined, this)
|
|
27705
27643
|
]
|
|
27706
27644
|
}, undefined, true, undefined, this);
|
|
27707
27645
|
}
|
|
27708
27646
|
|
|
27647
|
+
// src/components/docs/studio/StudioGettingStartedPage.tsx
|
|
27648
|
+
import Link97 from "@contractspec/lib.ui-link";
|
|
27649
|
+
import { jsxDEV as jsxDEV116 } from "react/jsx-dev-runtime";
|
|
27650
|
+
function StudioGettingStartedPage() {
|
|
27651
|
+
return /* @__PURE__ */ jsxDEV116("main", {
|
|
27652
|
+
className: "space-y-6 py-12",
|
|
27653
|
+
children: [
|
|
27654
|
+
/* @__PURE__ */ jsxDEV116("h1", {
|
|
27655
|
+
className: "text-3xl font-bold",
|
|
27656
|
+
children: "Studio docs moved"
|
|
27657
|
+
}, undefined, false, undefined, this),
|
|
27658
|
+
/* @__PURE__ */ jsxDEV116("p", {
|
|
27659
|
+
className: "text-muted-foreground text-sm",
|
|
27660
|
+
children: "The latest getting-started guide now lives in the Studio app docs."
|
|
27661
|
+
}, undefined, false, undefined, this),
|
|
27662
|
+
/* @__PURE__ */ jsxDEV116(Link97, {
|
|
27663
|
+
href: "https://app.contractspec.studio/docs",
|
|
27664
|
+
className: "btn-primary",
|
|
27665
|
+
children: "Open Studio docs"
|
|
27666
|
+
}, undefined, false, undefined, this)
|
|
27667
|
+
]
|
|
27668
|
+
}, undefined, true, undefined, this);
|
|
27669
|
+
}
|
|
27670
|
+
|
|
27709
27671
|
// src/components/docs/studio/StudioVisualBuilderPage.tsx
|
|
27710
|
-
import
|
|
27672
|
+
import Link98 from "@contractspec/lib.ui-link";
|
|
27711
27673
|
import { jsxDEV as jsxDEV117 } from "react/jsx-dev-runtime";
|
|
27712
|
-
var tips = [
|
|
27713
|
-
"Use two-finger drag on touch devices to pan the canvas.",
|
|
27714
|
-
"Tap a component to open the spec sidebar and edit props.",
|
|
27715
|
-
"The timeline records every change; tap a dot to roll back.",
|
|
27716
|
-
"Validation runs automatically before deploy. Errors show inline."
|
|
27717
|
-
];
|
|
27718
27674
|
function StudioVisualBuilderPage() {
|
|
27719
27675
|
return /* @__PURE__ */ jsxDEV117("main", {
|
|
27720
|
-
className: "space-y-
|
|
27676
|
+
className: "space-y-6 py-12",
|
|
27721
27677
|
children: [
|
|
27722
|
-
/* @__PURE__ */ jsxDEV117("
|
|
27723
|
-
className: "
|
|
27724
|
-
children:
|
|
27725
|
-
/* @__PURE__ */ jsxDEV117("p", {
|
|
27726
|
-
className: "text-xs font-semibold tracking-[0.3em] text-violet-400 uppercase",
|
|
27727
|
-
children: "Visual builder"
|
|
27728
|
-
}, undefined, false, undefined, this),
|
|
27729
|
-
/* @__PURE__ */ jsxDEV117("h1", {
|
|
27730
|
-
className: "text-4xl font-bold",
|
|
27731
|
-
children: "Canvas, palette, and spec editor"
|
|
27732
|
-
}, undefined, false, undefined, this),
|
|
27733
|
-
/* @__PURE__ */ jsxDEV117("p", {
|
|
27734
|
-
className: "text-muted-foreground max-w-3xl text-lg",
|
|
27735
|
-
children: "Studio\u2019s builder keeps designers, operators, and engineers in sync. Every action updates the underlying spec and can be undone."
|
|
27736
|
-
}, undefined, false, undefined, this)
|
|
27737
|
-
]
|
|
27738
|
-
}, undefined, true, undefined, this),
|
|
27739
|
-
/* @__PURE__ */ jsxDEV117("section", {
|
|
27740
|
-
className: "border-border bg-card rounded-2xl border p-6",
|
|
27741
|
-
children: /* @__PURE__ */ jsxDEV117(Image, {
|
|
27742
|
-
src: "/assets/images/studio/visual-builder.png",
|
|
27743
|
-
alt: "Studio visual builder overview",
|
|
27744
|
-
width: 1024,
|
|
27745
|
-
height: 576,
|
|
27746
|
-
className: "border-border rounded-xl border"
|
|
27747
|
-
}, undefined, false, undefined, this)
|
|
27678
|
+
/* @__PURE__ */ jsxDEV117("h1", {
|
|
27679
|
+
className: "text-3xl font-bold",
|
|
27680
|
+
children: "Studio docs moved"
|
|
27748
27681
|
}, undefined, false, undefined, this),
|
|
27749
|
-
/* @__PURE__ */ jsxDEV117("
|
|
27750
|
-
className: "
|
|
27751
|
-
children:
|
|
27752
|
-
|
|
27753
|
-
|
|
27754
|
-
|
|
27755
|
-
|
|
27756
|
-
|
|
27757
|
-
|
|
27758
|
-
}, undefined, false, undefined, this),
|
|
27759
|
-
/* @__PURE__ */ jsxDEV117("p", {
|
|
27760
|
-
className: "text-muted-foreground text-sm",
|
|
27761
|
-
children: "Drag to pan, scroll/ pinch to zoom. The right panel shows a tree view."
|
|
27762
|
-
}, undefined, false, undefined, this)
|
|
27763
|
-
]
|
|
27764
|
-
}, undefined, true, undefined, this),
|
|
27765
|
-
/* @__PURE__ */ jsxDEV117("article", {
|
|
27766
|
-
className: "card-subtle space-y-2 p-6",
|
|
27767
|
-
children: [
|
|
27768
|
-
/* @__PURE__ */ jsxDEV117("h2", {
|
|
27769
|
-
className: "text-2xl font-semibold",
|
|
27770
|
-
children: "Component palette"
|
|
27771
|
-
}, undefined, false, undefined, this),
|
|
27772
|
-
/* @__PURE__ */ jsxDEV117("p", {
|
|
27773
|
-
className: "text-muted-foreground text-sm",
|
|
27774
|
-
children: "Search by intent (\u201Ccapture payment\u201D) or category. Drag components or tap to add."
|
|
27775
|
-
}, undefined, false, undefined, this)
|
|
27776
|
-
]
|
|
27777
|
-
}, undefined, true, undefined, this),
|
|
27778
|
-
/* @__PURE__ */ jsxDEV117("article", {
|
|
27779
|
-
className: "card-subtle space-y-2 p-6",
|
|
27780
|
-
children: [
|
|
27781
|
-
/* @__PURE__ */ jsxDEV117("h2", {
|
|
27782
|
-
className: "text-2xl font-semibold",
|
|
27783
|
-
children: "Spec editor"
|
|
27784
|
-
}, undefined, false, undefined, this),
|
|
27785
|
-
/* @__PURE__ */ jsxDEV117("p", {
|
|
27786
|
-
className: "text-muted-foreground text-sm",
|
|
27787
|
-
children: "Toggle between visual and code views. Changes stay in sync and include diff previews."
|
|
27788
|
-
}, undefined, false, undefined, this)
|
|
27789
|
-
]
|
|
27790
|
-
}, undefined, true, undefined, this),
|
|
27791
|
-
/* @__PURE__ */ jsxDEV117("article", {
|
|
27792
|
-
className: "card-subtle space-y-2 p-6",
|
|
27793
|
-
children: [
|
|
27794
|
-
/* @__PURE__ */ jsxDEV117("h2", {
|
|
27795
|
-
className: "text-2xl font-semibold",
|
|
27796
|
-
children: "Deploy panel"
|
|
27797
|
-
}, undefined, false, undefined, this),
|
|
27798
|
-
/* @__PURE__ */ jsxDEV117("p", {
|
|
27799
|
-
className: "text-muted-foreground text-sm",
|
|
27800
|
-
children: "Choose environment, review validations, and deploy with one button. Rollback is one tap away."
|
|
27801
|
-
}, undefined, false, undefined, this)
|
|
27802
|
-
]
|
|
27803
|
-
}, undefined, true, undefined, this)
|
|
27804
|
-
]
|
|
27805
|
-
}, undefined, true, undefined, this),
|
|
27806
|
-
/* @__PURE__ */ jsxDEV117("section", {
|
|
27807
|
-
className: "space-y-3",
|
|
27808
|
-
children: [
|
|
27809
|
-
/* @__PURE__ */ jsxDEV117("h2", {
|
|
27810
|
-
className: "text-2xl font-semibold",
|
|
27811
|
-
children: "Tips"
|
|
27812
|
-
}, undefined, false, undefined, this),
|
|
27813
|
-
/* @__PURE__ */ jsxDEV117("ul", {
|
|
27814
|
-
className: "space-y-2 text-sm",
|
|
27815
|
-
children: tips.map((tip) => /* @__PURE__ */ jsxDEV117("li", {
|
|
27816
|
-
children: [
|
|
27817
|
-
"\u2022 ",
|
|
27818
|
-
tip
|
|
27819
|
-
]
|
|
27820
|
-
}, tip, true, undefined, this))
|
|
27821
|
-
}, undefined, false, undefined, this)
|
|
27822
|
-
]
|
|
27823
|
-
}, undefined, true, undefined, this)
|
|
27682
|
+
/* @__PURE__ */ jsxDEV117("p", {
|
|
27683
|
+
className: "text-muted-foreground text-sm",
|
|
27684
|
+
children: "Visual builder documentation now lives in the Studio app docs."
|
|
27685
|
+
}, undefined, false, undefined, this),
|
|
27686
|
+
/* @__PURE__ */ jsxDEV117(Link98, {
|
|
27687
|
+
href: "https://app.contractspec.studio/docs",
|
|
27688
|
+
className: "btn-primary",
|
|
27689
|
+
children: "Open Studio docs"
|
|
27690
|
+
}, undefined, false, undefined, this)
|
|
27824
27691
|
]
|
|
27825
27692
|
}, undefined, true, undefined, this);
|
|
27826
27693
|
}
|
|
27827
27694
|
|
|
27828
27695
|
// src/components/docs/studio/StudioIntegrationsPage.tsx
|
|
27696
|
+
import Link99 from "@contractspec/lib.ui-link";
|
|
27829
27697
|
import { jsxDEV as jsxDEV118 } from "react/jsx-dev-runtime";
|
|
27830
|
-
var flow = [
|
|
27831
|
-
{
|
|
27832
|
-
title: "Connect a provider",
|
|
27833
|
-
body: "Choose a provider from the marketplace, enter credentials, and run the test connection. Studio encrypts secrets immediately."
|
|
27834
|
-
},
|
|
27835
|
-
{
|
|
27836
|
-
title: "Schedule syncs",
|
|
27837
|
-
body: "Define sync cadence (manual, hourly, daily). Studio tracks usage count and last sync timestamp."
|
|
27838
|
-
},
|
|
27839
|
-
{
|
|
27840
|
-
title: "Index knowledge",
|
|
27841
|
-
body: "Add documentation or API specs as knowledge sources. Reindex whenever files change."
|
|
27842
|
-
}
|
|
27843
|
-
];
|
|
27844
27698
|
function StudioIntegrationsPage() {
|
|
27845
27699
|
return /* @__PURE__ */ jsxDEV118("main", {
|
|
27846
|
-
className: "space-y-
|
|
27700
|
+
className: "space-y-6 py-12",
|
|
27847
27701
|
children: [
|
|
27848
|
-
/* @__PURE__ */ jsxDEV118("
|
|
27849
|
-
className: "
|
|
27850
|
-
children:
|
|
27851
|
-
/* @__PURE__ */ jsxDEV118("p", {
|
|
27852
|
-
className: "text-xs font-semibold tracking-[0.3em] text-violet-400 uppercase",
|
|
27853
|
-
children: "Integration hub"
|
|
27854
|
-
}, undefined, false, undefined, this),
|
|
27855
|
-
/* @__PURE__ */ jsxDEV118("h1", {
|
|
27856
|
-
className: "text-4xl font-bold",
|
|
27857
|
-
children: "Unified connections with BYOK"
|
|
27858
|
-
}, undefined, false, undefined, this),
|
|
27859
|
-
/* @__PURE__ */ jsxDEV118("p", {
|
|
27860
|
-
className: "text-muted-foreground max-w-3xl text-lg",
|
|
27861
|
-
children: "Manage SaaS providers and knowledge sources without scattering secrets across tools. Studio gives you a simple card layout plus CLI automation."
|
|
27862
|
-
}, undefined, false, undefined, this)
|
|
27863
|
-
]
|
|
27864
|
-
}, undefined, true, undefined, this),
|
|
27865
|
-
/* @__PURE__ */ jsxDEV118("section", {
|
|
27866
|
-
className: "grid gap-4 md:grid-cols-3",
|
|
27867
|
-
children: flow.map((step) => /* @__PURE__ */ jsxDEV118("article", {
|
|
27868
|
-
className: "card-subtle space-y-2 p-6",
|
|
27869
|
-
children: [
|
|
27870
|
-
/* @__PURE__ */ jsxDEV118("h2", {
|
|
27871
|
-
className: "text-xl font-semibold",
|
|
27872
|
-
children: step.title
|
|
27873
|
-
}, undefined, false, undefined, this),
|
|
27874
|
-
/* @__PURE__ */ jsxDEV118("p", {
|
|
27875
|
-
className: "text-muted-foreground text-sm",
|
|
27876
|
-
children: step.body
|
|
27877
|
-
}, undefined, false, undefined, this)
|
|
27878
|
-
]
|
|
27879
|
-
}, step.title, true, undefined, this))
|
|
27702
|
+
/* @__PURE__ */ jsxDEV118("h1", {
|
|
27703
|
+
className: "text-3xl font-bold",
|
|
27704
|
+
children: "Studio docs moved"
|
|
27880
27705
|
}, undefined, false, undefined, this),
|
|
27881
|
-
/* @__PURE__ */ jsxDEV118("
|
|
27882
|
-
className: "
|
|
27883
|
-
children:
|
|
27884
|
-
|
|
27885
|
-
|
|
27886
|
-
|
|
27887
|
-
|
|
27888
|
-
|
|
27889
|
-
|
|
27890
|
-
children: "Every integration exposes sync logs and failure alerts. Use the webhook to forward sync events to Slack or PagerDuty."
|
|
27891
|
-
}, undefined, false, undefined, this)
|
|
27892
|
-
]
|
|
27893
|
-
}, undefined, true, undefined, this)
|
|
27706
|
+
/* @__PURE__ */ jsxDEV118("p", {
|
|
27707
|
+
className: "text-muted-foreground text-sm",
|
|
27708
|
+
children: "Integration guides now live in the Studio app docs."
|
|
27709
|
+
}, undefined, false, undefined, this),
|
|
27710
|
+
/* @__PURE__ */ jsxDEV118(Link99, {
|
|
27711
|
+
href: "https://app.contractspec.studio/docs",
|
|
27712
|
+
className: "btn-primary",
|
|
27713
|
+
children: "Open Studio docs"
|
|
27714
|
+
}, undefined, false, undefined, this)
|
|
27894
27715
|
]
|
|
27895
27716
|
}, undefined, true, undefined, this);
|
|
27896
27717
|
}
|
|
27897
27718
|
|
|
27898
27719
|
// src/components/docs/studio/StudioDeploymentsPage.tsx
|
|
27720
|
+
import Link100 from "@contractspec/lib.ui-link";
|
|
27899
27721
|
import { jsxDEV as jsxDEV119 } from "react/jsx-dev-runtime";
|
|
27900
|
-
var comparisons = [
|
|
27901
|
-
{
|
|
27902
|
-
label: "Shared",
|
|
27903
|
-
points: [
|
|
27904
|
-
"Ready in seconds",
|
|
27905
|
-
"DEV + STAGE by default",
|
|
27906
|
-
"Best for prototypes",
|
|
27907
|
-
"Managed SSL"
|
|
27908
|
-
]
|
|
27909
|
-
},
|
|
27910
|
-
{
|
|
27911
|
-
label: "Dedicated",
|
|
27912
|
-
points: [
|
|
27913
|
-
"Isolated clusters",
|
|
27914
|
-
"Choose region + VPC",
|
|
27915
|
-
"Rolling deploys",
|
|
27916
|
-
"Custom observability sinks"
|
|
27917
|
-
]
|
|
27918
|
-
}
|
|
27919
|
-
];
|
|
27920
|
-
var checklist = [
|
|
27921
|
-
"Validate specs before deploying (Studio does this automatically).",
|
|
27922
|
-
"Tag deployments with a description so rituals have context.",
|
|
27923
|
-
"Monitor status cards\u2014failed deploys trigger alerts and auto rollback.",
|
|
27924
|
-
"Use the CLI to export deployment manifests if you want infra-as-code."
|
|
27925
|
-
];
|
|
27926
27722
|
function StudioDeploymentsPage() {
|
|
27927
27723
|
return /* @__PURE__ */ jsxDEV119("main", {
|
|
27928
|
-
className: "space-y-
|
|
27724
|
+
className: "space-y-6 py-12",
|
|
27929
27725
|
children: [
|
|
27930
|
-
/* @__PURE__ */ jsxDEV119("
|
|
27931
|
-
className: "
|
|
27932
|
-
children:
|
|
27933
|
-
/* @__PURE__ */ jsxDEV119("p", {
|
|
27934
|
-
className: "text-xs font-semibold tracking-[0.3em] text-violet-400 uppercase",
|
|
27935
|
-
children: "Deployments"
|
|
27936
|
-
}, undefined, false, undefined, this),
|
|
27937
|
-
/* @__PURE__ */ jsxDEV119("h1", {
|
|
27938
|
-
className: "text-4xl font-bold",
|
|
27939
|
-
children: "Shared vs dedicated workflows"
|
|
27940
|
-
}, undefined, false, undefined, this),
|
|
27941
|
-
/* @__PURE__ */ jsxDEV119("p", {
|
|
27942
|
-
className: "text-muted-foreground max-w-3xl text-lg",
|
|
27943
|
-
children: "Studio abstracts infra, but you still stay in control. This guide explains how environments are provisioned, monitored, and rolled back."
|
|
27944
|
-
}, undefined, false, undefined, this)
|
|
27945
|
-
]
|
|
27946
|
-
}, undefined, true, undefined, this),
|
|
27947
|
-
/* @__PURE__ */ jsxDEV119("section", {
|
|
27948
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
27949
|
-
children: comparisons.map((option) => /* @__PURE__ */ jsxDEV119("article", {
|
|
27950
|
-
className: "card-subtle space-y-2 p-6",
|
|
27951
|
-
children: [
|
|
27952
|
-
/* @__PURE__ */ jsxDEV119("h2", {
|
|
27953
|
-
className: "text-2xl font-semibold",
|
|
27954
|
-
children: [
|
|
27955
|
-
option.label,
|
|
27956
|
-
" deployments"
|
|
27957
|
-
]
|
|
27958
|
-
}, undefined, true, undefined, this),
|
|
27959
|
-
/* @__PURE__ */ jsxDEV119("ul", {
|
|
27960
|
-
className: "space-y-1 text-sm",
|
|
27961
|
-
children: option.points.map((point) => /* @__PURE__ */ jsxDEV119("li", {
|
|
27962
|
-
children: [
|
|
27963
|
-
"\u2022 ",
|
|
27964
|
-
point
|
|
27965
|
-
]
|
|
27966
|
-
}, point, true, undefined, this))
|
|
27967
|
-
}, undefined, false, undefined, this)
|
|
27968
|
-
]
|
|
27969
|
-
}, option.label, true, undefined, this))
|
|
27726
|
+
/* @__PURE__ */ jsxDEV119("h1", {
|
|
27727
|
+
className: "text-3xl font-bold",
|
|
27728
|
+
children: "Studio docs moved"
|
|
27970
27729
|
}, undefined, false, undefined, this),
|
|
27971
|
-
/* @__PURE__ */ jsxDEV119("
|
|
27972
|
-
className: "
|
|
27973
|
-
children:
|
|
27974
|
-
|
|
27975
|
-
|
|
27976
|
-
|
|
27977
|
-
|
|
27978
|
-
|
|
27979
|
-
|
|
27980
|
-
children: "Every deployment emits health events. If a check fails, Studio pauses traffic and offers rollback controls with diff context."
|
|
27981
|
-
}, undefined, false, undefined, this),
|
|
27982
|
-
/* @__PURE__ */ jsxDEV119("ul", {
|
|
27983
|
-
className: "space-y-2 text-sm",
|
|
27984
|
-
children: checklist.map((item) => /* @__PURE__ */ jsxDEV119("li", {
|
|
27985
|
-
children: [
|
|
27986
|
-
"\u2022 ",
|
|
27987
|
-
item
|
|
27988
|
-
]
|
|
27989
|
-
}, item, true, undefined, this))
|
|
27990
|
-
}, undefined, false, undefined, this)
|
|
27991
|
-
]
|
|
27992
|
-
}, undefined, true, undefined, this)
|
|
27730
|
+
/* @__PURE__ */ jsxDEV119("p", {
|
|
27731
|
+
className: "text-muted-foreground text-sm",
|
|
27732
|
+
children: "Deployment guidance now lives in the Studio app docs."
|
|
27733
|
+
}, undefined, false, undefined, this),
|
|
27734
|
+
/* @__PURE__ */ jsxDEV119(Link100, {
|
|
27735
|
+
href: "https://app.contractspec.studio/docs",
|
|
27736
|
+
className: "btn-primary",
|
|
27737
|
+
children: "Open Studio docs"
|
|
27738
|
+
}, undefined, false, undefined, this)
|
|
27993
27739
|
]
|
|
27994
27740
|
}, undefined, true, undefined, this);
|
|
27995
27741
|
}
|
|
27996
27742
|
|
|
27997
27743
|
// src/components/docs/studio/StudioBYOKPage.tsx
|
|
27744
|
+
import Link101 from "@contractspec/lib.ui-link";
|
|
27998
27745
|
import { jsxDEV as jsxDEV120 } from "react/jsx-dev-runtime";
|
|
27999
|
-
var steps2 = [
|
|
28000
|
-
{
|
|
28001
|
-
title: "1. Provide vault endpoint",
|
|
28002
|
-
body: "Enter your Vault/HSM URL and the key identifier. Studio only stores the reference."
|
|
28003
|
-
},
|
|
28004
|
-
{
|
|
28005
|
-
title: "2. Verify encryption",
|
|
28006
|
-
body: "Studio runs a test by encrypting a dummy payload and asking you to decrypt it."
|
|
28007
|
-
},
|
|
28008
|
-
{
|
|
28009
|
-
title: "3. Store credentials",
|
|
28010
|
-
body: "When integrations are connected, secrets get encrypted client side before landing in the database."
|
|
28011
|
-
},
|
|
28012
|
-
{
|
|
28013
|
-
title: "4. Rotate keys",
|
|
28014
|
-
body: "Trigger rotation from the BYOK manager. Studio fetches existing secrets, decrypts with the old key, and re-encrypts with the new one."
|
|
28015
|
-
}
|
|
28016
|
-
];
|
|
28017
27746
|
function StudioBYOKPage() {
|
|
28018
27747
|
return /* @__PURE__ */ jsxDEV120("main", {
|
|
28019
|
-
className: "space-y-
|
|
27748
|
+
className: "space-y-6 py-12",
|
|
28020
27749
|
children: [
|
|
28021
|
-
/* @__PURE__ */ jsxDEV120("
|
|
28022
|
-
className: "
|
|
28023
|
-
children:
|
|
28024
|
-
/* @__PURE__ */ jsxDEV120("p", {
|
|
28025
|
-
className: "text-xs font-semibold tracking-[0.3em] text-violet-400 uppercase",
|
|
28026
|
-
children: "BYOK"
|
|
28027
|
-
}, undefined, false, undefined, this),
|
|
28028
|
-
/* @__PURE__ */ jsxDEV120("h1", {
|
|
28029
|
-
className: "text-4xl font-bold",
|
|
28030
|
-
children: "Bring your own key to Studio"
|
|
28031
|
-
}, undefined, false, undefined, this),
|
|
28032
|
-
/* @__PURE__ */ jsxDEV120("p", {
|
|
28033
|
-
className: "text-muted-foreground max-w-3xl text-lg",
|
|
28034
|
-
children: "Keep secrets under your control. Studio never touches plaintext credentials; everything is encrypted with tenant-specific material."
|
|
28035
|
-
}, undefined, false, undefined, this)
|
|
28036
|
-
]
|
|
28037
|
-
}, undefined, true, undefined, this),
|
|
28038
|
-
/* @__PURE__ */ jsxDEV120("section", {
|
|
28039
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
28040
|
-
children: steps2.map((step) => /* @__PURE__ */ jsxDEV120("article", {
|
|
28041
|
-
className: "card-subtle space-y-2 p-6",
|
|
28042
|
-
children: [
|
|
28043
|
-
/* @__PURE__ */ jsxDEV120("h2", {
|
|
28044
|
-
className: "text-xl font-semibold",
|
|
28045
|
-
children: step.title
|
|
28046
|
-
}, undefined, false, undefined, this),
|
|
28047
|
-
/* @__PURE__ */ jsxDEV120("p", {
|
|
28048
|
-
className: "text-muted-foreground text-sm",
|
|
28049
|
-
children: step.body
|
|
28050
|
-
}, undefined, false, undefined, this)
|
|
28051
|
-
]
|
|
28052
|
-
}, step.title, true, undefined, this))
|
|
27750
|
+
/* @__PURE__ */ jsxDEV120("h1", {
|
|
27751
|
+
className: "text-3xl font-bold",
|
|
27752
|
+
children: "Studio docs moved"
|
|
28053
27753
|
}, undefined, false, undefined, this),
|
|
28054
|
-
/* @__PURE__ */ jsxDEV120("
|
|
28055
|
-
className: "
|
|
28056
|
-
children:
|
|
28057
|
-
|
|
28058
|
-
|
|
28059
|
-
|
|
28060
|
-
|
|
28061
|
-
|
|
28062
|
-
|
|
28063
|
-
children: "Every decrypt operation logs who requested it, what integration was involved, and the purpose (sync, deploy, manual action)."
|
|
28064
|
-
}, undefined, false, undefined, this),
|
|
28065
|
-
/* @__PURE__ */ jsxDEV120("p", {
|
|
28066
|
-
className: "text-muted-foreground text-sm",
|
|
28067
|
-
children: "You can stream audit logs to your SIEM via webhooks or export CSVs for compliance reviews."
|
|
28068
|
-
}, undefined, false, undefined, this)
|
|
28069
|
-
]
|
|
28070
|
-
}, undefined, true, undefined, this)
|
|
27754
|
+
/* @__PURE__ */ jsxDEV120("p", {
|
|
27755
|
+
className: "text-muted-foreground text-sm",
|
|
27756
|
+
children: "Security and BYOK guidance now lives in the Studio app docs."
|
|
27757
|
+
}, undefined, false, undefined, this),
|
|
27758
|
+
/* @__PURE__ */ jsxDEV120(Link101, {
|
|
27759
|
+
href: "https://app.contractspec.studio/docs",
|
|
27760
|
+
className: "btn-primary",
|
|
27761
|
+
children: "Open Studio docs"
|
|
27762
|
+
}, undefined, false, undefined, this)
|
|
28071
27763
|
]
|
|
28072
27764
|
}, undefined, true, undefined, this);
|
|
28073
27765
|
}
|