@contractspec/bundle.library 2.9.0 → 3.0.0
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 +129 -115
- package/CHANGELOG.md +53 -0
- package/dist/components/docs/DocsIndexPage.js +1 -1
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.d.ts +1 -0
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +204 -0
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +17 -1
- package/dist/components/docs/architecture/index.d.ts +1 -0
- package/dist/components/docs/architecture/index.js +507 -289
- package/dist/components/docs/ecosystem/IntegrationsPage.js +6 -3
- package/dist/components/docs/ecosystem/PluginsPage.js +98 -98
- package/dist/components/docs/ecosystem/RegistryPage.js +39 -42
- package/dist/components/docs/ecosystem/TemplatesPage.js +26 -21
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +10 -10
- package/dist/components/docs/ecosystem/index.js +179 -174
- package/dist/components/docs/index.js +6795 -5376
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsGithubPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +155 -0
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +168 -0
- package/dist/components/docs/integrations/IntegrationsMistralPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +203 -0
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +136 -9
- package/dist/components/docs/integrations/IntegrationsSlackPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +161 -0
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +72 -0
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +157 -0
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +165 -0
- package/dist/components/docs/integrations/index.d.ts +6 -0
- package/dist/components/docs/integrations/index.js +1688 -492
- package/dist/index.js +8016 -6597
- package/dist/node/components/docs/DocsIndexPage.js +1 -1
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +203 -0
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +17 -1
- package/dist/node/components/docs/architecture/index.js +507 -289
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +6 -3
- package/dist/node/components/docs/ecosystem/PluginsPage.js +98 -98
- package/dist/node/components/docs/ecosystem/RegistryPage.js +39 -42
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +26 -21
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +10 -10
- package/dist/node/components/docs/ecosystem/index.js +179 -174
- package/dist/node/components/docs/index.js +6795 -5376
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +154 -0
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +167 -0
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +202 -0
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +136 -9
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +160 -0
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +72 -0
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +156 -0
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +164 -0
- package/dist/node/components/docs/integrations/index.js +1688 -492
- package/dist/node/index.js +8016 -6597
- package/package.json +104 -20
- package/src/components/docs/DocsIndexPage.tsx +2 -1
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +136 -0
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +13 -1
- package/src/components/docs/architecture/index.ts +1 -0
- package/src/components/docs/ecosystem/IntegrationsPage.tsx +4 -3
- package/src/components/docs/ecosystem/PluginsPage.tsx +68 -87
- package/src/components/docs/ecosystem/RegistryPage.tsx +35 -43
- package/src/components/docs/ecosystem/TemplatesPage.tsx +28 -21
- package/src/components/docs/ecosystem/ecosystem.docblocks.ts +12 -10
- package/src/components/docs/generated/docs-index._common.json +240 -0
- package/src/components/docs/generated/docs-index.health.json +98 -0
- package/src/components/docs/generated/docs-index.manifest.json +14 -4
- package/src/components/docs/generated/docs-index.platform-integrations.json +81 -1
- package/src/components/docs/generated/docs-index.video-api-showcase.json +26 -0
- package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +2 -2
- package/src/components/docs/integrations/IntegrationsGithubPage.tsx +90 -0
- package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +112 -0
- package/src/components/docs/integrations/IntegrationsMistralPage.tsx +133 -0
- package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +2 -2
- package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +108 -9
- package/src/components/docs/integrations/IntegrationsSlackPage.tsx +98 -0
- package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +59 -0
- package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +2 -2
- package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +90 -0
- package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +92 -0
- package/src/components/docs/integrations/index.ts +6 -0
|
@@ -379,12 +379,12 @@ function ArchitectureAppConfigPage() {
|
|
|
379
379
|
}, undefined, true, undefined, this);
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
-
// src/components/docs/architecture/
|
|
382
|
+
// src/components/docs/architecture/ArchitectureControlPlanePage.tsx
|
|
383
383
|
import { CodeBlock as CodeBlock2 } from "@contractspec/lib.design-system";
|
|
384
384
|
import Link2 from "@contractspec/lib.ui-link";
|
|
385
385
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
386
386
|
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
387
|
-
function
|
|
387
|
+
function ArchitectureControlPlanePage() {
|
|
388
388
|
return /* @__PURE__ */ jsxDEV2("div", {
|
|
389
389
|
className: "space-y-8",
|
|
390
390
|
children: [
|
|
@@ -393,11 +393,11 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
393
393
|
children: [
|
|
394
394
|
/* @__PURE__ */ jsxDEV2("h1", {
|
|
395
395
|
className: "text-4xl font-bold",
|
|
396
|
-
children: "
|
|
396
|
+
children: "Control Plane Runtime"
|
|
397
397
|
}, undefined, false, undefined, this),
|
|
398
398
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
399
399
|
className: "text-muted-foreground",
|
|
400
|
-
children: "
|
|
400
|
+
children: "The control plane is the governance layer for agentic execution. It turns incoming intent into deterministic plans, enforces risk policy before side effects, and records replayable traces for audits."
|
|
401
401
|
}, undefined, false, undefined, this)
|
|
402
402
|
]
|
|
403
403
|
}, undefined, true, undefined, this),
|
|
@@ -406,34 +406,235 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
406
406
|
children: [
|
|
407
407
|
/* @__PURE__ */ jsxDEV2("h2", {
|
|
408
408
|
className: "text-2xl font-bold",
|
|
409
|
-
children: "
|
|
409
|
+
children: "Canonical execution loop"
|
|
410
|
+
}, undefined, false, undefined, this),
|
|
411
|
+
/* @__PURE__ */ jsxDEV2("ol", {
|
|
412
|
+
className: "text-muted-foreground list-inside list-decimal space-y-2",
|
|
413
|
+
children: [
|
|
414
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
415
|
+
children: "Accept intent and create execution identity + trace context."
|
|
416
|
+
}, undefined, false, undefined, this),
|
|
417
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
418
|
+
children: "Compile intent into a typed, deterministic plan DAG."
|
|
419
|
+
}, undefined, false, undefined, this),
|
|
420
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
421
|
+
children: "Verify plan against policy and risk rules."
|
|
422
|
+
}, undefined, false, undefined, this),
|
|
423
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
424
|
+
children: "Route into autonomous or assist mode based on verdict."
|
|
425
|
+
}, undefined, false, undefined, this),
|
|
426
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
427
|
+
children: "Execute steps with idempotent keys and explicit stage events."
|
|
428
|
+
}, undefined, false, undefined, this),
|
|
429
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
430
|
+
children: "Persist outcomes for replay, audits, and operator visibility."
|
|
431
|
+
}, undefined, false, undefined, this)
|
|
432
|
+
]
|
|
433
|
+
}, undefined, true, undefined, this)
|
|
434
|
+
]
|
|
435
|
+
}, undefined, true, undefined, this),
|
|
436
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
437
|
+
className: "space-y-4",
|
|
438
|
+
children: [
|
|
439
|
+
/* @__PURE__ */ jsxDEV2("h2", {
|
|
440
|
+
className: "text-2xl font-bold",
|
|
441
|
+
children: "Contract surfaces (v1 baseline)"
|
|
442
|
+
}, undefined, false, undefined, this),
|
|
443
|
+
/* @__PURE__ */ jsxDEV2("p", {
|
|
444
|
+
className: "text-muted-foreground",
|
|
445
|
+
children: [
|
|
446
|
+
"The runtime is contract-first. Commands, queries, events, and capabilities are explicit and versioned under",
|
|
447
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
448
|
+
children: " @contractspec/lib.contracts-spec"
|
|
449
|
+
}, undefined, false, undefined, this),
|
|
450
|
+
"."
|
|
451
|
+
]
|
|
452
|
+
}, undefined, true, undefined, this),
|
|
453
|
+
/* @__PURE__ */ jsxDEV2(CodeBlock2, {
|
|
454
|
+
language: "text",
|
|
455
|
+
code: `Commands
|
|
456
|
+
- controlPlane.intent.submit
|
|
457
|
+
- controlPlane.plan.compile
|
|
458
|
+
- controlPlane.plan.verify
|
|
459
|
+
- controlPlane.execution.start
|
|
460
|
+
- controlPlane.execution.approve
|
|
461
|
+
- controlPlane.execution.reject
|
|
462
|
+
- controlPlane.execution.cancel
|
|
463
|
+
- controlPlane.skill.install
|
|
464
|
+
- controlPlane.skill.disable
|
|
465
|
+
|
|
466
|
+
Queries
|
|
467
|
+
- controlPlane.execution.get
|
|
468
|
+
- controlPlane.execution.list
|
|
469
|
+
- controlPlane.trace.get
|
|
470
|
+
- controlPlane.policy.explain
|
|
471
|
+
- controlPlane.skill.list
|
|
472
|
+
- controlPlane.skill.verify
|
|
473
|
+
|
|
474
|
+
Events
|
|
475
|
+
- controlPlane.intent.received
|
|
476
|
+
- controlPlane.plan.compiled
|
|
477
|
+
- controlPlane.plan.rejected
|
|
478
|
+
- controlPlane.execution.step.started
|
|
479
|
+
- controlPlane.execution.step.blocked
|
|
480
|
+
- controlPlane.execution.step.completed
|
|
481
|
+
- controlPlane.execution.completed
|
|
482
|
+
- controlPlane.execution.failed
|
|
483
|
+
- controlPlane.skill.installed
|
|
484
|
+
- controlPlane.skill.rejected
|
|
485
|
+
|
|
486
|
+
Capabilities
|
|
487
|
+
- control-plane.core
|
|
488
|
+
- control-plane.approval
|
|
489
|
+
- control-plane.audit
|
|
490
|
+
- control-plane.skill-registry
|
|
491
|
+
- control-plane.channel-runtime`
|
|
492
|
+
}, undefined, false, undefined, this)
|
|
493
|
+
]
|
|
494
|
+
}, undefined, true, undefined, this),
|
|
495
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
496
|
+
className: "space-y-4",
|
|
497
|
+
children: [
|
|
498
|
+
/* @__PURE__ */ jsxDEV2("h2", {
|
|
499
|
+
className: "text-2xl font-bold",
|
|
500
|
+
children: "Policy and safety posture"
|
|
501
|
+
}, undefined, false, undefined, this),
|
|
502
|
+
/* @__PURE__ */ jsxDEV2("ul", {
|
|
503
|
+
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
504
|
+
children: [
|
|
505
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
506
|
+
children: "No side-effect action executes unless it comes from a compiled plan."
|
|
507
|
+
}, undefined, false, undefined, this),
|
|
508
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
509
|
+
children: "High-risk actions are blocked from autonomous mode in v1."
|
|
510
|
+
}, undefined, false, undefined, this),
|
|
511
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
512
|
+
children: "Approval commands provide explicit human-in-the-loop transitions."
|
|
513
|
+
}, undefined, false, undefined, this),
|
|
514
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
515
|
+
children: "Skill installation is modeled as governance-controlled operations."
|
|
516
|
+
}, undefined, false, undefined, this),
|
|
517
|
+
/* @__PURE__ */ jsxDEV2("li", {
|
|
518
|
+
children: "Trace queries expose policy rationale and step outcomes for replay."
|
|
519
|
+
}, undefined, false, undefined, this)
|
|
520
|
+
]
|
|
521
|
+
}, undefined, true, undefined, this)
|
|
522
|
+
]
|
|
523
|
+
}, undefined, true, undefined, this),
|
|
524
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
525
|
+
className: "space-y-4",
|
|
526
|
+
children: [
|
|
527
|
+
/* @__PURE__ */ jsxDEV2("h2", {
|
|
528
|
+
className: "text-2xl font-bold",
|
|
529
|
+
children: "Implementation map"
|
|
530
|
+
}, undefined, false, undefined, this),
|
|
531
|
+
/* @__PURE__ */ jsxDEV2(CodeBlock2, {
|
|
532
|
+
language: "text",
|
|
533
|
+
code: `packages/libs/contracts-spec/src/control-plane/
|
|
534
|
+
commands/
|
|
535
|
+
queries/
|
|
536
|
+
events/
|
|
537
|
+
capabilities/
|
|
538
|
+
contracts.ts
|
|
539
|
+
contracts.test.ts
|
|
540
|
+
|
|
541
|
+
packages/apps/web-landing/src/app/docs/architecture/control-plane/page.tsx
|
|
542
|
+
implementation_plan_controle_plane.md`
|
|
543
|
+
}, undefined, false, undefined, this)
|
|
544
|
+
]
|
|
545
|
+
}, undefined, true, undefined, this),
|
|
546
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
547
|
+
className: "space-y-4",
|
|
548
|
+
children: [
|
|
549
|
+
/* @__PURE__ */ jsxDEV2("h2", {
|
|
550
|
+
className: "text-2xl font-bold",
|
|
551
|
+
children: "What comes next"
|
|
410
552
|
}, undefined, false, undefined, this),
|
|
411
553
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
554
|
+
className: "text-muted-foreground",
|
|
555
|
+
children: "WS1 delivers the contract fabric. Next increments add planner/executor split, policy escalation, capability-bound authorization, signed skill compatibility checks, and full replay tooling."
|
|
556
|
+
}, undefined, false, undefined, this)
|
|
557
|
+
]
|
|
558
|
+
}, undefined, true, undefined, this),
|
|
559
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
560
|
+
className: "flex items-center gap-4 pt-4",
|
|
561
|
+
children: [
|
|
562
|
+
/* @__PURE__ */ jsxDEV2(Link2, {
|
|
563
|
+
href: "/docs/architecture/integration-binding",
|
|
564
|
+
className: "btn-ghost",
|
|
565
|
+
children: "Previous: Integration Binding"
|
|
566
|
+
}, undefined, false, undefined, this),
|
|
567
|
+
/* @__PURE__ */ jsxDEV2(Link2, {
|
|
568
|
+
href: "/docs/safety/auditing",
|
|
569
|
+
className: "btn-primary",
|
|
570
|
+
children: [
|
|
571
|
+
"Audit Logs ",
|
|
572
|
+
/* @__PURE__ */ jsxDEV2(ChevronRight2, {
|
|
573
|
+
size: 16
|
|
574
|
+
}, undefined, false, undefined, this)
|
|
575
|
+
]
|
|
576
|
+
}, undefined, true, undefined, this)
|
|
577
|
+
]
|
|
578
|
+
}, undefined, true, undefined, this)
|
|
579
|
+
]
|
|
580
|
+
}, undefined, true, undefined, this);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
// src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx
|
|
584
|
+
import { CodeBlock as CodeBlock3 } from "@contractspec/lib.design-system";
|
|
585
|
+
import Link3 from "@contractspec/lib.ui-link";
|
|
586
|
+
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
587
|
+
import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
|
|
588
|
+
function ArchitectureIntegrationBindingPage() {
|
|
589
|
+
return /* @__PURE__ */ jsxDEV3("div", {
|
|
590
|
+
className: "space-y-8",
|
|
591
|
+
children: [
|
|
592
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
593
|
+
className: "space-y-4",
|
|
594
|
+
children: [
|
|
595
|
+
/* @__PURE__ */ jsxDEV3("h1", {
|
|
596
|
+
className: "text-4xl font-bold",
|
|
597
|
+
children: "Integration Binding"
|
|
598
|
+
}, undefined, false, undefined, this),
|
|
599
|
+
/* @__PURE__ */ jsxDEV3("p", {
|
|
600
|
+
className: "text-muted-foreground",
|
|
601
|
+
children: "Integration binding connects your app's capabilities to external service providers. Each tenant can configure their own integration connections while sharing the same app blueprint."
|
|
602
|
+
}, undefined, false, undefined, this)
|
|
603
|
+
]
|
|
604
|
+
}, undefined, true, undefined, this),
|
|
605
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
606
|
+
className: "space-y-4",
|
|
607
|
+
children: [
|
|
608
|
+
/* @__PURE__ */ jsxDEV3("h2", {
|
|
609
|
+
className: "text-2xl font-bold",
|
|
610
|
+
children: "How it works"
|
|
611
|
+
}, undefined, false, undefined, this),
|
|
612
|
+
/* @__PURE__ */ jsxDEV3("p", {
|
|
412
613
|
className: "text-muted-foreground",
|
|
413
614
|
children: "Integration binding follows a three-layer model:"
|
|
414
615
|
}, undefined, false, undefined, this),
|
|
415
|
-
/* @__PURE__ */
|
|
616
|
+
/* @__PURE__ */ jsxDEV3("ol", {
|
|
416
617
|
className: "text-muted-foreground list-inside list-decimal space-y-3",
|
|
417
618
|
children: [
|
|
418
|
-
/* @__PURE__ */
|
|
619
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
419
620
|
children: [
|
|
420
|
-
/* @__PURE__ */
|
|
621
|
+
/* @__PURE__ */ jsxDEV3("strong", {
|
|
421
622
|
children: "IntegrationSpec"
|
|
422
623
|
}, undefined, false, undefined, this),
|
|
423
624
|
" (global) - Defines what an integration provides"
|
|
424
625
|
]
|
|
425
626
|
}, undefined, true, undefined, this),
|
|
426
|
-
/* @__PURE__ */
|
|
627
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
427
628
|
children: [
|
|
428
|
-
/* @__PURE__ */
|
|
629
|
+
/* @__PURE__ */ jsxDEV3("strong", {
|
|
429
630
|
children: "IntegrationConnection"
|
|
430
631
|
}, undefined, false, undefined, this),
|
|
431
632
|
" (per-tenant) - A tenant's configured connection"
|
|
432
633
|
]
|
|
433
634
|
}, undefined, true, undefined, this),
|
|
434
|
-
/* @__PURE__ */
|
|
635
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
435
636
|
children: [
|
|
436
|
-
/* @__PURE__ */
|
|
637
|
+
/* @__PURE__ */ jsxDEV3("strong", {
|
|
437
638
|
children: "AppIntegrationBinding"
|
|
438
639
|
}, undefined, false, undefined, this),
|
|
439
640
|
" (per-app) - Maps named slots to concrete tenant connections"
|
|
@@ -443,25 +644,25 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
443
644
|
}, undefined, true, undefined, this)
|
|
444
645
|
]
|
|
445
646
|
}, undefined, true, undefined, this),
|
|
446
|
-
/* @__PURE__ */
|
|
647
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
447
648
|
className: "space-y-4",
|
|
448
649
|
children: [
|
|
449
|
-
/* @__PURE__ */
|
|
650
|
+
/* @__PURE__ */ jsxDEV3("h2", {
|
|
450
651
|
className: "text-2xl font-bold",
|
|
451
652
|
children: "Example: Payment processing"
|
|
452
653
|
}, undefined, false, undefined, this),
|
|
453
|
-
/* @__PURE__ */
|
|
654
|
+
/* @__PURE__ */ jsxDEV3("p", {
|
|
454
655
|
className: "text-muted-foreground",
|
|
455
656
|
children: "Let's walk through a complete example of binding Stripe for payments."
|
|
456
657
|
}, undefined, false, undefined, this),
|
|
457
|
-
/* @__PURE__ */
|
|
658
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
458
659
|
className: "space-y-3",
|
|
459
660
|
children: [
|
|
460
|
-
/* @__PURE__ */
|
|
661
|
+
/* @__PURE__ */ jsxDEV3("h3", {
|
|
461
662
|
className: "text-lg font-semibold",
|
|
462
663
|
children: "Step 1: Blueprint declares requirement"
|
|
463
664
|
}, undefined, false, undefined, this),
|
|
464
|
-
/* @__PURE__ */
|
|
665
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
465
666
|
language: "typescript",
|
|
466
667
|
code: `// AppBlueprintSpec
|
|
467
668
|
{
|
|
@@ -491,14 +692,14 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
491
692
|
}, undefined, false, undefined, this)
|
|
492
693
|
]
|
|
493
694
|
}, undefined, true, undefined, this),
|
|
494
|
-
/* @__PURE__ */
|
|
695
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
495
696
|
className: "space-y-3",
|
|
496
697
|
children: [
|
|
497
|
-
/* @__PURE__ */
|
|
698
|
+
/* @__PURE__ */ jsxDEV3("h3", {
|
|
498
699
|
className: "text-lg font-semibold",
|
|
499
700
|
children: "Step 2: Tenant creates connection"
|
|
500
701
|
}, undefined, false, undefined, this),
|
|
501
|
-
/* @__PURE__ */
|
|
702
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
502
703
|
language: "typescript",
|
|
503
704
|
code: `// IntegrationConnection
|
|
504
705
|
{
|
|
@@ -524,14 +725,14 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
524
725
|
}, undefined, false, undefined, this)
|
|
525
726
|
]
|
|
526
727
|
}, undefined, true, undefined, this),
|
|
527
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
528
729
|
className: "space-y-3",
|
|
529
730
|
children: [
|
|
530
|
-
/* @__PURE__ */
|
|
731
|
+
/* @__PURE__ */ jsxDEV3("h3", {
|
|
531
732
|
className: "text-lg font-semibold",
|
|
532
733
|
children: "Step 3: TenantAppConfig binds connection"
|
|
533
734
|
}, undefined, false, undefined, this),
|
|
534
|
-
/* @__PURE__ */
|
|
735
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
535
736
|
language: "typescript",
|
|
536
737
|
code: `// TenantAppConfig
|
|
537
738
|
{
|
|
@@ -563,14 +764,14 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
563
764
|
}, undefined, false, undefined, this)
|
|
564
765
|
]
|
|
565
766
|
}, undefined, true, undefined, this),
|
|
566
|
-
/* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
567
768
|
className: "space-y-3",
|
|
568
769
|
children: [
|
|
569
|
-
/* @__PURE__ */
|
|
770
|
+
/* @__PURE__ */ jsxDEV3("h3", {
|
|
570
771
|
className: "text-lg font-semibold",
|
|
571
772
|
children: "Step 4: Runtime resolves and executes"
|
|
572
773
|
}, undefined, false, undefined, this),
|
|
573
|
-
/* @__PURE__ */
|
|
774
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
574
775
|
language: "typescript",
|
|
575
776
|
code: `// ResolvedAppConfig (runtime)
|
|
576
777
|
{
|
|
@@ -595,18 +796,18 @@ const result = await executeCapability(
|
|
|
595
796
|
}, undefined, true, undefined, this)
|
|
596
797
|
]
|
|
597
798
|
}, undefined, true, undefined, this),
|
|
598
|
-
/* @__PURE__ */
|
|
799
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
599
800
|
className: "space-y-4",
|
|
600
801
|
children: [
|
|
601
|
-
/* @__PURE__ */
|
|
802
|
+
/* @__PURE__ */ jsxDEV3("h2", {
|
|
602
803
|
className: "text-2xl font-bold",
|
|
603
804
|
children: "Multi-integration scenarios"
|
|
604
805
|
}, undefined, false, undefined, this),
|
|
605
|
-
/* @__PURE__ */
|
|
806
|
+
/* @__PURE__ */ jsxDEV3("p", {
|
|
606
807
|
className: "text-muted-foreground",
|
|
607
808
|
children: "A single app can use multiple integrations across different categories:"
|
|
608
809
|
}, undefined, false, undefined, this),
|
|
609
|
-
/* @__PURE__ */
|
|
810
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
610
811
|
language: "typescript",
|
|
611
812
|
code: `integrations: [
|
|
612
813
|
{
|
|
@@ -638,18 +839,18 @@ const result = await executeCapability(
|
|
|
638
839
|
}, undefined, false, undefined, this)
|
|
639
840
|
]
|
|
640
841
|
}, undefined, true, undefined, this),
|
|
641
|
-
/* @__PURE__ */
|
|
842
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
642
843
|
className: "space-y-4",
|
|
643
844
|
children: [
|
|
644
|
-
/* @__PURE__ */
|
|
845
|
+
/* @__PURE__ */ jsxDEV3("h2", {
|
|
645
846
|
className: "text-2xl font-bold",
|
|
646
847
|
children: "Sandbox vs Production"
|
|
647
848
|
}, undefined, false, undefined, this),
|
|
648
|
-
/* @__PURE__ */
|
|
849
|
+
/* @__PURE__ */ jsxDEV3("p", {
|
|
649
850
|
className: "text-muted-foreground",
|
|
650
851
|
children: "Tenants typically maintain separate connections for sandbox and production environments:"
|
|
651
852
|
}, undefined, false, undefined, this),
|
|
652
|
-
/* @__PURE__ */
|
|
853
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
653
854
|
language: "typescript",
|
|
654
855
|
code: `// Sandbox environment
|
|
655
856
|
{
|
|
@@ -675,84 +876,84 @@ const result = await executeCapability(
|
|
|
675
876
|
}, undefined, false, undefined, this)
|
|
676
877
|
]
|
|
677
878
|
}, undefined, true, undefined, this),
|
|
678
|
-
/* @__PURE__ */
|
|
879
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
679
880
|
className: "space-y-4",
|
|
680
881
|
children: [
|
|
681
|
-
/* @__PURE__ */
|
|
882
|
+
/* @__PURE__ */ jsxDEV3("h2", {
|
|
682
883
|
className: "text-2xl font-bold",
|
|
683
884
|
children: "Security & validation"
|
|
684
885
|
}, undefined, false, undefined, this),
|
|
685
|
-
/* @__PURE__ */
|
|
886
|
+
/* @__PURE__ */ jsxDEV3("ul", {
|
|
686
887
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
687
888
|
children: [
|
|
688
|
-
/* @__PURE__ */
|
|
889
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
689
890
|
children: "Integration connections are validated before binding - health checks ensure connectivity"
|
|
690
891
|
}, undefined, false, undefined, this),
|
|
691
|
-
/* @__PURE__ */
|
|
892
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
692
893
|
children: "Secrets are never stored in TenantAppConfig - only references to encrypted secrets"
|
|
693
894
|
}, undefined, false, undefined, this),
|
|
694
|
-
/* @__PURE__ */
|
|
895
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
695
896
|
children: "Policy Decision Point (PDP) enforces which workflows can use which integrations"
|
|
696
897
|
}, undefined, false, undefined, this),
|
|
697
|
-
/* @__PURE__ */
|
|
898
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
698
899
|
children: "All integration calls are audited with full request/response logging"
|
|
699
900
|
}, undefined, false, undefined, this),
|
|
700
|
-
/* @__PURE__ */
|
|
901
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
701
902
|
children: "Rate limiting and quotas are enforced per connection"
|
|
702
903
|
}, undefined, false, undefined, this)
|
|
703
904
|
]
|
|
704
905
|
}, undefined, true, undefined, this)
|
|
705
906
|
]
|
|
706
907
|
}, undefined, true, undefined, this),
|
|
707
|
-
/* @__PURE__ */
|
|
908
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
708
909
|
className: "space-y-4",
|
|
709
910
|
children: [
|
|
710
|
-
/* @__PURE__ */
|
|
911
|
+
/* @__PURE__ */ jsxDEV3("h2", {
|
|
711
912
|
className: "text-2xl font-bold",
|
|
712
913
|
children: "Best practices"
|
|
713
914
|
}, undefined, false, undefined, this),
|
|
714
|
-
/* @__PURE__ */
|
|
915
|
+
/* @__PURE__ */ jsxDEV3("ul", {
|
|
715
916
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
716
917
|
children: [
|
|
717
|
-
/* @__PURE__ */
|
|
918
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
718
919
|
children: [
|
|
719
920
|
"Use wildcard patterns sparingly in ",
|
|
720
|
-
/* @__PURE__ */
|
|
921
|
+
/* @__PURE__ */ jsxDEV3("code", {
|
|
721
922
|
children: "allowedWorkflows"
|
|
722
923
|
}, undefined, false, undefined, this),
|
|
723
924
|
" - be explicit about access"
|
|
724
925
|
]
|
|
725
926
|
}, undefined, true, undefined, this),
|
|
726
|
-
/* @__PURE__ */
|
|
927
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
727
928
|
children: "Always maintain separate sandbox and production connections"
|
|
728
929
|
}, undefined, false, undefined, this),
|
|
729
|
-
/* @__PURE__ */
|
|
930
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
730
931
|
children: "Monitor integration health checks and set up alerts for failures"
|
|
731
932
|
}, undefined, false, undefined, this),
|
|
732
|
-
/* @__PURE__ */
|
|
933
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
733
934
|
children: "Document the purpose of each integration binding for your team"
|
|
734
935
|
}, undefined, false, undefined, this),
|
|
735
|
-
/* @__PURE__ */
|
|
936
|
+
/* @__PURE__ */ jsxDEV3("li", {
|
|
736
937
|
children: "Test integration changes in sandbox before promoting to production"
|
|
737
938
|
}, undefined, false, undefined, this)
|
|
738
939
|
]
|
|
739
940
|
}, undefined, true, undefined, this)
|
|
740
941
|
]
|
|
741
942
|
}, undefined, true, undefined, this),
|
|
742
|
-
/* @__PURE__ */
|
|
943
|
+
/* @__PURE__ */ jsxDEV3("div", {
|
|
743
944
|
className: "flex items-center gap-4 pt-4",
|
|
744
945
|
children: [
|
|
745
|
-
/* @__PURE__ */
|
|
946
|
+
/* @__PURE__ */ jsxDEV3(Link3, {
|
|
746
947
|
href: "/docs/architecture/app-config",
|
|
747
948
|
className: "btn-ghost",
|
|
748
949
|
children: "Previous: App Configuration"
|
|
749
950
|
}, undefined, false, undefined, this),
|
|
750
|
-
/* @__PURE__ */
|
|
951
|
+
/* @__PURE__ */ jsxDEV3(Link3, {
|
|
751
952
|
href: "/docs/architecture/knowledge-binding",
|
|
752
953
|
className: "btn-primary",
|
|
753
954
|
children: [
|
|
754
955
|
"Knowledge Binding ",
|
|
755
|
-
/* @__PURE__ */
|
|
956
|
+
/* @__PURE__ */ jsxDEV3(ChevronRight3, {
|
|
756
957
|
size: 16
|
|
757
958
|
}, undefined, false, undefined, this)
|
|
758
959
|
]
|
|
@@ -764,60 +965,60 @@ const result = await executeCapability(
|
|
|
764
965
|
}
|
|
765
966
|
|
|
766
967
|
// src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx
|
|
767
|
-
import { CodeBlock as
|
|
768
|
-
import
|
|
769
|
-
import { ChevronRight as
|
|
770
|
-
import { jsxDEV as
|
|
968
|
+
import { CodeBlock as CodeBlock4 } from "@contractspec/lib.design-system";
|
|
969
|
+
import Link4 from "@contractspec/lib.ui-link";
|
|
970
|
+
import { ChevronRight as ChevronRight4 } from "lucide-react";
|
|
971
|
+
import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
|
|
771
972
|
function ArchitectureKnowledgeBindingPage() {
|
|
772
|
-
return /* @__PURE__ */
|
|
973
|
+
return /* @__PURE__ */ jsxDEV4("div", {
|
|
773
974
|
className: "space-y-8",
|
|
774
975
|
children: [
|
|
775
|
-
/* @__PURE__ */
|
|
976
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
776
977
|
className: "space-y-4",
|
|
777
978
|
children: [
|
|
778
|
-
/* @__PURE__ */
|
|
979
|
+
/* @__PURE__ */ jsxDEV4("h1", {
|
|
779
980
|
className: "text-4xl font-bold",
|
|
780
981
|
children: "Knowledge Binding"
|
|
781
982
|
}, undefined, false, undefined, this),
|
|
782
|
-
/* @__PURE__ */
|
|
983
|
+
/* @__PURE__ */ jsxDEV4("p", {
|
|
783
984
|
className: "text-muted-foreground",
|
|
784
985
|
children: "Knowledge binding connects your app's workflows and agents to structured knowledge spaces. This enables semantic search, RAG (Retrieval-Augmented Generation), and context-aware decision-making."
|
|
785
986
|
}, undefined, false, undefined, this)
|
|
786
987
|
]
|
|
787
988
|
}, undefined, true, undefined, this),
|
|
788
|
-
/* @__PURE__ */
|
|
989
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
789
990
|
className: "space-y-4",
|
|
790
991
|
children: [
|
|
791
|
-
/* @__PURE__ */
|
|
992
|
+
/* @__PURE__ */ jsxDEV4("h2", {
|
|
792
993
|
className: "text-2xl font-bold",
|
|
793
994
|
children: "How it works"
|
|
794
995
|
}, undefined, false, undefined, this),
|
|
795
|
-
/* @__PURE__ */
|
|
996
|
+
/* @__PURE__ */ jsxDEV4("p", {
|
|
796
997
|
className: "text-muted-foreground",
|
|
797
998
|
children: "Knowledge binding follows a three-layer model:"
|
|
798
999
|
}, undefined, false, undefined, this),
|
|
799
|
-
/* @__PURE__ */
|
|
1000
|
+
/* @__PURE__ */ jsxDEV4("ol", {
|
|
800
1001
|
className: "text-muted-foreground list-inside list-decimal space-y-3",
|
|
801
1002
|
children: [
|
|
802
|
-
/* @__PURE__ */
|
|
1003
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
803
1004
|
children: [
|
|
804
|
-
/* @__PURE__ */
|
|
1005
|
+
/* @__PURE__ */ jsxDEV4("strong", {
|
|
805
1006
|
children: "KnowledgeSpaceSpec"
|
|
806
1007
|
}, undefined, false, undefined, this),
|
|
807
1008
|
" (global) - Defines a logical knowledge domain"
|
|
808
1009
|
]
|
|
809
1010
|
}, undefined, true, undefined, this),
|
|
810
|
-
/* @__PURE__ */
|
|
1011
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
811
1012
|
children: [
|
|
812
|
-
/* @__PURE__ */
|
|
1013
|
+
/* @__PURE__ */ jsxDEV4("strong", {
|
|
813
1014
|
children: "KnowledgeSourceConfig"
|
|
814
1015
|
}, undefined, false, undefined, this),
|
|
815
1016
|
" (per-tenant) - Tenant's data sources feeding spaces"
|
|
816
1017
|
]
|
|
817
1018
|
}, undefined, true, undefined, this),
|
|
818
|
-
/* @__PURE__ */
|
|
1019
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
819
1020
|
children: [
|
|
820
|
-
/* @__PURE__ */
|
|
1021
|
+
/* @__PURE__ */ jsxDEV4("strong", {
|
|
821
1022
|
children: "AppKnowledgeBinding"
|
|
822
1023
|
}, undefined, false, undefined, this),
|
|
823
1024
|
" (per-app) - Maps spaces to workflows/agents"
|
|
@@ -827,25 +1028,25 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
827
1028
|
}, undefined, true, undefined, this)
|
|
828
1029
|
]
|
|
829
1030
|
}, undefined, true, undefined, this),
|
|
830
|
-
/* @__PURE__ */
|
|
1031
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
831
1032
|
className: "space-y-4",
|
|
832
1033
|
children: [
|
|
833
|
-
/* @__PURE__ */
|
|
1034
|
+
/* @__PURE__ */ jsxDEV4("h2", {
|
|
834
1035
|
className: "text-2xl font-bold",
|
|
835
1036
|
children: "Example: Support agent with RAG"
|
|
836
1037
|
}, undefined, false, undefined, this),
|
|
837
|
-
/* @__PURE__ */
|
|
1038
|
+
/* @__PURE__ */ jsxDEV4("p", {
|
|
838
1039
|
className: "text-muted-foreground",
|
|
839
1040
|
children: "Let's build a support agent that uses canonical product documentation and operational support history."
|
|
840
1041
|
}, undefined, false, undefined, this),
|
|
841
|
-
/* @__PURE__ */
|
|
1042
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
842
1043
|
className: "space-y-3",
|
|
843
1044
|
children: [
|
|
844
|
-
/* @__PURE__ */
|
|
1045
|
+
/* @__PURE__ */ jsxDEV4("h3", {
|
|
845
1046
|
className: "text-lg font-semibold",
|
|
846
1047
|
children: "Step 1: Blueprint declares knowledge needs"
|
|
847
1048
|
}, undefined, false, undefined, this),
|
|
848
|
-
/* @__PURE__ */
|
|
1049
|
+
/* @__PURE__ */ jsxDEV4(CodeBlock4, {
|
|
849
1050
|
language: "typescript",
|
|
850
1051
|
code: `// AppBlueprintSpec
|
|
851
1052
|
{
|
|
@@ -875,14 +1076,14 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
875
1076
|
}, undefined, false, undefined, this)
|
|
876
1077
|
]
|
|
877
1078
|
}, undefined, true, undefined, this),
|
|
878
|
-
/* @__PURE__ */
|
|
1079
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
879
1080
|
className: "space-y-3",
|
|
880
1081
|
children: [
|
|
881
|
-
/* @__PURE__ */
|
|
1082
|
+
/* @__PURE__ */ jsxDEV4("h3", {
|
|
882
1083
|
className: "text-lg font-semibold",
|
|
883
1084
|
children: "Step 2: Tenant configures sources"
|
|
884
1085
|
}, undefined, false, undefined, this),
|
|
885
|
-
/* @__PURE__ */
|
|
1086
|
+
/* @__PURE__ */ jsxDEV4(CodeBlock4, {
|
|
886
1087
|
language: "typescript",
|
|
887
1088
|
code: `// KnowledgeSourceConfig (per-tenant)
|
|
888
1089
|
[
|
|
@@ -917,14 +1118,14 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
917
1118
|
}, undefined, false, undefined, this)
|
|
918
1119
|
]
|
|
919
1120
|
}, undefined, true, undefined, this),
|
|
920
|
-
/* @__PURE__ */
|
|
1121
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
921
1122
|
className: "space-y-3",
|
|
922
1123
|
children: [
|
|
923
|
-
/* @__PURE__ */
|
|
1124
|
+
/* @__PURE__ */ jsxDEV4("h3", {
|
|
924
1125
|
className: "text-lg font-semibold",
|
|
925
1126
|
children: "Step 3: TenantAppConfig binds spaces"
|
|
926
1127
|
}, undefined, false, undefined, this),
|
|
927
|
-
/* @__PURE__ */
|
|
1128
|
+
/* @__PURE__ */ jsxDEV4(CodeBlock4, {
|
|
928
1129
|
language: "typescript",
|
|
929
1130
|
code: `// TenantAppConfig
|
|
930
1131
|
{
|
|
@@ -966,14 +1167,14 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
966
1167
|
}, undefined, false, undefined, this)
|
|
967
1168
|
]
|
|
968
1169
|
}, undefined, true, undefined, this),
|
|
969
|
-
/* @__PURE__ */
|
|
1170
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
970
1171
|
className: "space-y-3",
|
|
971
1172
|
children: [
|
|
972
|
-
/* @__PURE__ */
|
|
1173
|
+
/* @__PURE__ */ jsxDEV4("h3", {
|
|
973
1174
|
className: "text-lg font-semibold",
|
|
974
1175
|
children: "Step 4: Workflow uses knowledge"
|
|
975
1176
|
}, undefined, false, undefined, this),
|
|
976
|
-
/* @__PURE__ */
|
|
1177
|
+
/* @__PURE__ */ jsxDEV4(CodeBlock4, {
|
|
977
1178
|
language: "yaml",
|
|
978
1179
|
code: `// WorkflowSpec
|
|
979
1180
|
workflowId: answer-question
|
|
@@ -1023,124 +1224,124 @@ steps:
|
|
|
1023
1224
|
}, undefined, true, undefined, this)
|
|
1024
1225
|
]
|
|
1025
1226
|
}, undefined, true, undefined, this),
|
|
1026
|
-
/* @__PURE__ */
|
|
1227
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
1027
1228
|
className: "space-y-4",
|
|
1028
1229
|
children: [
|
|
1029
|
-
/* @__PURE__ */
|
|
1230
|
+
/* @__PURE__ */ jsxDEV4("h2", {
|
|
1030
1231
|
className: "text-2xl font-bold",
|
|
1031
1232
|
children: "Category-based access control"
|
|
1032
1233
|
}, undefined, false, undefined, this),
|
|
1033
|
-
/* @__PURE__ */
|
|
1234
|
+
/* @__PURE__ */ jsxDEV4("p", {
|
|
1034
1235
|
className: "text-muted-foreground",
|
|
1035
1236
|
children: "Different knowledge categories have different trust levels and access patterns:"
|
|
1036
1237
|
}, undefined, false, undefined, this),
|
|
1037
|
-
/* @__PURE__ */
|
|
1238
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
1038
1239
|
className: "border-border/50 overflow-x-auto rounded-lg border",
|
|
1039
|
-
children: /* @__PURE__ */
|
|
1240
|
+
children: /* @__PURE__ */ jsxDEV4("table", {
|
|
1040
1241
|
className: "w-full text-left text-sm",
|
|
1041
1242
|
children: [
|
|
1042
|
-
/* @__PURE__ */
|
|
1243
|
+
/* @__PURE__ */ jsxDEV4("thead", {
|
|
1043
1244
|
className: "bg-card/50",
|
|
1044
|
-
children: /* @__PURE__ */
|
|
1245
|
+
children: /* @__PURE__ */ jsxDEV4("tr", {
|
|
1045
1246
|
className: "border-border/50 border-b",
|
|
1046
1247
|
children: [
|
|
1047
|
-
/* @__PURE__ */
|
|
1248
|
+
/* @__PURE__ */ jsxDEV4("th", {
|
|
1048
1249
|
className: "px-4 py-3 font-semibold",
|
|
1049
1250
|
children: "Category"
|
|
1050
1251
|
}, undefined, false, undefined, this),
|
|
1051
|
-
/* @__PURE__ */
|
|
1252
|
+
/* @__PURE__ */ jsxDEV4("th", {
|
|
1052
1253
|
className: "px-4 py-3 font-semibold",
|
|
1053
1254
|
children: "Trust Level"
|
|
1054
1255
|
}, undefined, false, undefined, this),
|
|
1055
|
-
/* @__PURE__ */
|
|
1256
|
+
/* @__PURE__ */ jsxDEV4("th", {
|
|
1056
1257
|
className: "px-4 py-3 font-semibold",
|
|
1057
1258
|
children: "Use Cases"
|
|
1058
1259
|
}, undefined, false, undefined, this),
|
|
1059
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ jsxDEV4("th", {
|
|
1060
1261
|
className: "px-4 py-3 font-semibold",
|
|
1061
1262
|
children: "Policy Impact"
|
|
1062
1263
|
}, undefined, false, undefined, this)
|
|
1063
1264
|
]
|
|
1064
1265
|
}, undefined, true, undefined, this)
|
|
1065
1266
|
}, undefined, false, undefined, this),
|
|
1066
|
-
/* @__PURE__ */
|
|
1267
|
+
/* @__PURE__ */ jsxDEV4("tbody", {
|
|
1067
1268
|
className: "divide-border/50 divide-y",
|
|
1068
1269
|
children: [
|
|
1069
|
-
/* @__PURE__ */
|
|
1270
|
+
/* @__PURE__ */ jsxDEV4("tr", {
|
|
1070
1271
|
children: [
|
|
1071
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1072
1273
|
className: "px-4 py-3 font-mono text-xs",
|
|
1073
1274
|
children: "canonical"
|
|
1074
1275
|
}, undefined, false, undefined, this),
|
|
1075
|
-
/* @__PURE__ */
|
|
1276
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1076
1277
|
className: "px-4 py-3",
|
|
1077
1278
|
children: "Highest"
|
|
1078
1279
|
}, undefined, false, undefined, this),
|
|
1079
|
-
/* @__PURE__ */
|
|
1280
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1080
1281
|
className: "px-4 py-3",
|
|
1081
1282
|
children: "Product specs, schemas, official policies"
|
|
1082
1283
|
}, undefined, false, undefined, this),
|
|
1083
|
-
/* @__PURE__ */
|
|
1284
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1084
1285
|
className: "px-4 py-3",
|
|
1085
1286
|
children: "Can drive policy decisions"
|
|
1086
1287
|
}, undefined, false, undefined, this)
|
|
1087
1288
|
]
|
|
1088
1289
|
}, undefined, true, undefined, this),
|
|
1089
|
-
/* @__PURE__ */
|
|
1290
|
+
/* @__PURE__ */ jsxDEV4("tr", {
|
|
1090
1291
|
children: [
|
|
1091
|
-
/* @__PURE__ */
|
|
1292
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1092
1293
|
className: "px-4 py-3 font-mono text-xs",
|
|
1093
1294
|
children: "operational"
|
|
1094
1295
|
}, undefined, false, undefined, this),
|
|
1095
|
-
/* @__PURE__ */
|
|
1296
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1096
1297
|
className: "px-4 py-3",
|
|
1097
1298
|
children: "High"
|
|
1098
1299
|
}, undefined, false, undefined, this),
|
|
1099
|
-
/* @__PURE__ */
|
|
1300
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1100
1301
|
className: "px-4 py-3",
|
|
1101
1302
|
children: "Support tickets, sales docs, internal runbooks"
|
|
1102
1303
|
}, undefined, false, undefined, this),
|
|
1103
|
-
/* @__PURE__ */
|
|
1304
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1104
1305
|
className: "px-4 py-3",
|
|
1105
1306
|
children: "Can inform decisions"
|
|
1106
1307
|
}, undefined, false, undefined, this)
|
|
1107
1308
|
]
|
|
1108
1309
|
}, undefined, true, undefined, this),
|
|
1109
|
-
/* @__PURE__ */
|
|
1310
|
+
/* @__PURE__ */ jsxDEV4("tr", {
|
|
1110
1311
|
children: [
|
|
1111
|
-
/* @__PURE__ */
|
|
1312
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1112
1313
|
className: "px-4 py-3 font-mono text-xs",
|
|
1113
1314
|
children: "external"
|
|
1114
1315
|
}, undefined, false, undefined, this),
|
|
1115
|
-
/* @__PURE__ */
|
|
1316
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1116
1317
|
className: "px-4 py-3",
|
|
1117
1318
|
children: "Medium"
|
|
1118
1319
|
}, undefined, false, undefined, this),
|
|
1119
|
-
/* @__PURE__ */
|
|
1320
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1120
1321
|
className: "px-4 py-3",
|
|
1121
1322
|
children: "Third-party docs, regulations, PSP guides"
|
|
1122
1323
|
}, undefined, false, undefined, this),
|
|
1123
|
-
/* @__PURE__ */
|
|
1324
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1124
1325
|
className: "px-4 py-3",
|
|
1125
1326
|
children: "Reference only, not authoritative"
|
|
1126
1327
|
}, undefined, false, undefined, this)
|
|
1127
1328
|
]
|
|
1128
1329
|
}, undefined, true, undefined, this),
|
|
1129
|
-
/* @__PURE__ */
|
|
1330
|
+
/* @__PURE__ */ jsxDEV4("tr", {
|
|
1130
1331
|
children: [
|
|
1131
|
-
/* @__PURE__ */
|
|
1332
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1132
1333
|
className: "px-4 py-3 font-mono text-xs",
|
|
1133
1334
|
children: "ephemeral"
|
|
1134
1335
|
}, undefined, false, undefined, this),
|
|
1135
|
-
/* @__PURE__ */
|
|
1336
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1136
1337
|
className: "px-4 py-3",
|
|
1137
1338
|
children: "Low"
|
|
1138
1339
|
}, undefined, false, undefined, this),
|
|
1139
|
-
/* @__PURE__ */
|
|
1340
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1140
1341
|
className: "px-4 py-3",
|
|
1141
1342
|
children: "Agent scratchpads, session context, drafts"
|
|
1142
1343
|
}, undefined, false, undefined, this),
|
|
1143
|
-
/* @__PURE__ */
|
|
1344
|
+
/* @__PURE__ */ jsxDEV4("td", {
|
|
1144
1345
|
className: "px-4 py-3",
|
|
1145
1346
|
children: "Never used for decisions"
|
|
1146
1347
|
}, undefined, false, undefined, this)
|
|
@@ -1153,18 +1354,18 @@ steps:
|
|
|
1153
1354
|
}, undefined, false, undefined, this)
|
|
1154
1355
|
]
|
|
1155
1356
|
}, undefined, true, undefined, this),
|
|
1156
|
-
/* @__PURE__ */
|
|
1357
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
1157
1358
|
className: "space-y-4",
|
|
1158
1359
|
children: [
|
|
1159
|
-
/* @__PURE__ */
|
|
1360
|
+
/* @__PURE__ */ jsxDEV4("h2", {
|
|
1160
1361
|
className: "text-2xl font-bold",
|
|
1161
1362
|
children: "Multi-space workflows"
|
|
1162
1363
|
}, undefined, false, undefined, this),
|
|
1163
|
-
/* @__PURE__ */
|
|
1364
|
+
/* @__PURE__ */ jsxDEV4("p", {
|
|
1164
1365
|
className: "text-muted-foreground",
|
|
1165
1366
|
children: "Workflows can query multiple knowledge spaces and combine results:"
|
|
1166
1367
|
}, undefined, false, undefined, this),
|
|
1167
|
-
/* @__PURE__ */
|
|
1368
|
+
/* @__PURE__ */ jsxDEV4(CodeBlock4, {
|
|
1168
1369
|
language: "typescript",
|
|
1169
1370
|
code: `knowledgeBindings: [
|
|
1170
1371
|
{
|
|
@@ -1198,64 +1399,64 @@ steps:
|
|
|
1198
1399
|
}, undefined, false, undefined, this)
|
|
1199
1400
|
]
|
|
1200
1401
|
}, undefined, true, undefined, this),
|
|
1201
|
-
/* @__PURE__ */
|
|
1402
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
1202
1403
|
className: "space-y-4",
|
|
1203
1404
|
children: [
|
|
1204
|
-
/* @__PURE__ */
|
|
1405
|
+
/* @__PURE__ */ jsxDEV4("h2", {
|
|
1205
1406
|
className: "text-2xl font-bold",
|
|
1206
1407
|
children: "Security & validation"
|
|
1207
1408
|
}, undefined, false, undefined, this),
|
|
1208
|
-
/* @__PURE__ */
|
|
1409
|
+
/* @__PURE__ */ jsxDEV4("ul", {
|
|
1209
1410
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1210
1411
|
children: [
|
|
1211
|
-
/* @__PURE__ */
|
|
1412
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1212
1413
|
children: "Knowledge sources are validated before sync - credentials and permissions checked"
|
|
1213
1414
|
}, undefined, false, undefined, this),
|
|
1214
|
-
/* @__PURE__ */
|
|
1415
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1215
1416
|
children: "PDP enforces which workflows/agents can access which spaces"
|
|
1216
1417
|
}, undefined, false, undefined, this),
|
|
1217
|
-
/* @__PURE__ */
|
|
1418
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1218
1419
|
children: "All knowledge queries are audited with search terms and results"
|
|
1219
1420
|
}, undefined, false, undefined, this),
|
|
1220
|
-
/* @__PURE__ */
|
|
1421
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1221
1422
|
children: "Canonical knowledge is immutable once indexed - changes require re-sync"
|
|
1222
1423
|
}, undefined, false, undefined, this),
|
|
1223
|
-
/* @__PURE__ */
|
|
1424
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1224
1425
|
children: "Ephemeral knowledge is automatically purged based on retention policies"
|
|
1225
1426
|
}, undefined, false, undefined, this)
|
|
1226
1427
|
]
|
|
1227
1428
|
}, undefined, true, undefined, this)
|
|
1228
1429
|
]
|
|
1229
1430
|
}, undefined, true, undefined, this),
|
|
1230
|
-
/* @__PURE__ */
|
|
1431
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
1231
1432
|
className: "space-y-4",
|
|
1232
1433
|
children: [
|
|
1233
|
-
/* @__PURE__ */
|
|
1434
|
+
/* @__PURE__ */ jsxDEV4("h2", {
|
|
1234
1435
|
className: "text-2xl font-bold",
|
|
1235
1436
|
children: "Best practices"
|
|
1236
1437
|
}, undefined, false, undefined, this),
|
|
1237
|
-
/* @__PURE__ */
|
|
1438
|
+
/* @__PURE__ */ jsxDEV4("ul", {
|
|
1238
1439
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1239
1440
|
children: [
|
|
1240
|
-
/* @__PURE__ */
|
|
1441
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1241
1442
|
children: "Use canonical spaces for policy-critical decisions, operational for suggestions"
|
|
1242
1443
|
}, undefined, false, undefined, this),
|
|
1243
|
-
/* @__PURE__ */
|
|
1444
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1244
1445
|
children: "Never allow workflows to write to canonical spaces - maintain read-only access"
|
|
1245
1446
|
}, undefined, false, undefined, this),
|
|
1246
|
-
/* @__PURE__ */
|
|
1447
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1247
1448
|
children: "Set up monitoring for sync failures and stale knowledge sources"
|
|
1248
1449
|
}, undefined, false, undefined, this),
|
|
1249
|
-
/* @__PURE__ */
|
|
1450
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1250
1451
|
children: "Document the purpose and trust level of each knowledge space"
|
|
1251
1452
|
}, undefined, false, undefined, this),
|
|
1252
|
-
/* @__PURE__ */
|
|
1453
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1253
1454
|
children: "Test knowledge queries in sandbox before promoting to production"
|
|
1254
1455
|
}, undefined, false, undefined, this),
|
|
1255
|
-
/* @__PURE__ */
|
|
1456
|
+
/* @__PURE__ */ jsxDEV4("li", {
|
|
1256
1457
|
children: [
|
|
1257
1458
|
"Use explicit ",
|
|
1258
|
-
/* @__PURE__ */
|
|
1459
|
+
/* @__PURE__ */ jsxDEV4("code", {
|
|
1259
1460
|
children: "allowedConsumers"
|
|
1260
1461
|
}, undefined, false, undefined, this),
|
|
1261
1462
|
" - avoid wildcard access"
|
|
@@ -1265,20 +1466,20 @@ steps:
|
|
|
1265
1466
|
}, undefined, true, undefined, this)
|
|
1266
1467
|
]
|
|
1267
1468
|
}, undefined, true, undefined, this),
|
|
1268
|
-
/* @__PURE__ */
|
|
1469
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
1269
1470
|
className: "flex items-center gap-4 pt-4",
|
|
1270
1471
|
children: [
|
|
1271
|
-
/* @__PURE__ */
|
|
1472
|
+
/* @__PURE__ */ jsxDEV4(Link4, {
|
|
1272
1473
|
href: "/docs/architecture/integration-binding",
|
|
1273
1474
|
className: "btn-ghost",
|
|
1274
1475
|
children: "Previous: Integration Binding"
|
|
1275
1476
|
}, undefined, false, undefined, this),
|
|
1276
|
-
/* @__PURE__ */
|
|
1477
|
+
/* @__PURE__ */ jsxDEV4(Link4, {
|
|
1277
1478
|
href: "/docs/knowledge",
|
|
1278
1479
|
className: "btn-primary",
|
|
1279
1480
|
children: [
|
|
1280
1481
|
"Knowledge & Context ",
|
|
1281
|
-
/* @__PURE__ */
|
|
1482
|
+
/* @__PURE__ */ jsxDEV4(ChevronRight4, {
|
|
1282
1483
|
size: 16
|
|
1283
1484
|
}, undefined, false, undefined, this)
|
|
1284
1485
|
]
|
|
@@ -1290,60 +1491,60 @@ steps:
|
|
|
1290
1491
|
}
|
|
1291
1492
|
|
|
1292
1493
|
// src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx
|
|
1293
|
-
import { CodeBlock as
|
|
1294
|
-
import
|
|
1295
|
-
import { ChevronRight as
|
|
1296
|
-
import { jsxDEV as
|
|
1494
|
+
import { CodeBlock as CodeBlock5 } from "@contractspec/lib.design-system";
|
|
1495
|
+
import Link5 from "@contractspec/lib.ui-link";
|
|
1496
|
+
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
1497
|
+
import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
|
|
1297
1498
|
function ArchitectureMultiTenancyPage() {
|
|
1298
|
-
return /* @__PURE__ */
|
|
1499
|
+
return /* @__PURE__ */ jsxDEV5("div", {
|
|
1299
1500
|
className: "space-y-8",
|
|
1300
1501
|
children: [
|
|
1301
|
-
/* @__PURE__ */
|
|
1502
|
+
/* @__PURE__ */ jsxDEV5("div", {
|
|
1302
1503
|
className: "space-y-4",
|
|
1303
1504
|
children: [
|
|
1304
|
-
/* @__PURE__ */
|
|
1505
|
+
/* @__PURE__ */ jsxDEV5("h1", {
|
|
1305
1506
|
className: "text-4xl font-bold",
|
|
1306
1507
|
children: "Multi-Tenancy"
|
|
1307
1508
|
}, undefined, false, undefined, this),
|
|
1308
|
-
/* @__PURE__ */
|
|
1509
|
+
/* @__PURE__ */ jsxDEV5("p", {
|
|
1309
1510
|
className: "text-muted-foreground",
|
|
1310
1511
|
children: "ContractSpec is designed from the ground up for multi-tenancy. Apps built with ContractSpec can serve multiple organizations (tenants) from a single deployment, while ensuring strict data isolation and configuration separation."
|
|
1311
1512
|
}, undefined, false, undefined, this)
|
|
1312
1513
|
]
|
|
1313
1514
|
}, undefined, true, undefined, this),
|
|
1314
|
-
/* @__PURE__ */
|
|
1515
|
+
/* @__PURE__ */ jsxDEV5("div", {
|
|
1315
1516
|
className: "space-y-4",
|
|
1316
1517
|
children: [
|
|
1317
|
-
/* @__PURE__ */
|
|
1518
|
+
/* @__PURE__ */ jsxDEV5("h2", {
|
|
1318
1519
|
className: "text-2xl font-bold",
|
|
1319
1520
|
children: "Core Concepts"
|
|
1320
1521
|
}, undefined, false, undefined, this),
|
|
1321
|
-
/* @__PURE__ */
|
|
1522
|
+
/* @__PURE__ */ jsxDEV5("ul", {
|
|
1322
1523
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1323
1524
|
children: [
|
|
1324
|
-
/* @__PURE__ */
|
|
1525
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1325
1526
|
children: [
|
|
1326
|
-
/* @__PURE__ */
|
|
1527
|
+
/* @__PURE__ */ jsxDEV5("strong", {
|
|
1327
1528
|
children: "Tenant"
|
|
1328
1529
|
}, undefined, false, undefined, this),
|
|
1329
1530
|
": An organization or customer that uses your app. Each tenant has a unique ",
|
|
1330
|
-
/* @__PURE__ */
|
|
1531
|
+
/* @__PURE__ */ jsxDEV5("code", {
|
|
1331
1532
|
children: "tenantId"
|
|
1332
1533
|
}, undefined, false, undefined, this),
|
|
1333
1534
|
"."
|
|
1334
1535
|
]
|
|
1335
1536
|
}, undefined, true, undefined, this),
|
|
1336
|
-
/* @__PURE__ */
|
|
1537
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1337
1538
|
children: [
|
|
1338
|
-
/* @__PURE__ */
|
|
1539
|
+
/* @__PURE__ */ jsxDEV5("strong", {
|
|
1339
1540
|
children: "Tenant Isolation"
|
|
1340
1541
|
}, undefined, false, undefined, this),
|
|
1341
1542
|
": Data and configuration for one tenant is never accessible to another tenant unless explicitly shared."
|
|
1342
1543
|
]
|
|
1343
1544
|
}, undefined, true, undefined, this),
|
|
1344
|
-
/* @__PURE__ */
|
|
1545
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1345
1546
|
children: [
|
|
1346
|
-
/* @__PURE__ */
|
|
1547
|
+
/* @__PURE__ */ jsxDEV5("strong", {
|
|
1347
1548
|
children: "Tenant Context"
|
|
1348
1549
|
}, undefined, false, undefined, this),
|
|
1349
1550
|
": Every request and operation runs within the context of a specific tenant."
|
|
@@ -1353,72 +1554,72 @@ function ArchitectureMultiTenancyPage() {
|
|
|
1353
1554
|
}, undefined, true, undefined, this)
|
|
1354
1555
|
]
|
|
1355
1556
|
}, undefined, true, undefined, this),
|
|
1356
|
-
/* @__PURE__ */
|
|
1557
|
+
/* @__PURE__ */ jsxDEV5("div", {
|
|
1357
1558
|
className: "space-y-4",
|
|
1358
1559
|
children: [
|
|
1359
|
-
/* @__PURE__ */
|
|
1560
|
+
/* @__PURE__ */ jsxDEV5("h2", {
|
|
1360
1561
|
className: "text-2xl font-bold",
|
|
1361
1562
|
children: "Tenant Resolution"
|
|
1362
1563
|
}, undefined, false, undefined, this),
|
|
1363
|
-
/* @__PURE__ */
|
|
1564
|
+
/* @__PURE__ */ jsxDEV5("p", {
|
|
1364
1565
|
className: "text-muted-foreground",
|
|
1365
1566
|
children: "The runtime automatically resolves the tenant context for every request based on:"
|
|
1366
1567
|
}, undefined, false, undefined, this),
|
|
1367
|
-
/* @__PURE__ */
|
|
1568
|
+
/* @__PURE__ */ jsxDEV5("ul", {
|
|
1368
1569
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1369
1570
|
children: [
|
|
1370
|
-
/* @__PURE__ */
|
|
1571
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1371
1572
|
children: [
|
|
1372
1573
|
"Subdomain (e.g., ",
|
|
1373
|
-
/* @__PURE__ */
|
|
1574
|
+
/* @__PURE__ */ jsxDEV5("code", {
|
|
1374
1575
|
children: "acme.app.com"
|
|
1375
1576
|
}, undefined, false, undefined, this),
|
|
1376
1577
|
")"
|
|
1377
1578
|
]
|
|
1378
1579
|
}, undefined, true, undefined, this),
|
|
1379
|
-
/* @__PURE__ */
|
|
1580
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1380
1581
|
children: [
|
|
1381
1582
|
"Custom Domain (e.g., ",
|
|
1382
|
-
/* @__PURE__ */
|
|
1583
|
+
/* @__PURE__ */ jsxDEV5("code", {
|
|
1383
1584
|
children: "portal.acme.com"
|
|
1384
1585
|
}, undefined, false, undefined, this),
|
|
1385
1586
|
")"
|
|
1386
1587
|
]
|
|
1387
1588
|
}, undefined, true, undefined, this),
|
|
1388
|
-
/* @__PURE__ */
|
|
1589
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1389
1590
|
children: [
|
|
1390
1591
|
"Header (e.g., ",
|
|
1391
|
-
/* @__PURE__ */
|
|
1592
|
+
/* @__PURE__ */ jsxDEV5("code", {
|
|
1392
1593
|
children: "x-tenant-id: acme-corp"
|
|
1393
1594
|
}, undefined, false, undefined, this),
|
|
1394
1595
|
")"
|
|
1395
1596
|
]
|
|
1396
1597
|
}, undefined, true, undefined, this),
|
|
1397
|
-
/* @__PURE__ */
|
|
1598
|
+
/* @__PURE__ */ jsxDEV5("li", {
|
|
1398
1599
|
children: "Authentication Token (embedded tenant claim)"
|
|
1399
1600
|
}, undefined, false, undefined, this)
|
|
1400
1601
|
]
|
|
1401
1602
|
}, undefined, true, undefined, this)
|
|
1402
1603
|
]
|
|
1403
1604
|
}, undefined, true, undefined, this),
|
|
1404
|
-
/* @__PURE__ */
|
|
1605
|
+
/* @__PURE__ */ jsxDEV5("div", {
|
|
1405
1606
|
className: "space-y-4",
|
|
1406
1607
|
children: [
|
|
1407
|
-
/* @__PURE__ */
|
|
1608
|
+
/* @__PURE__ */ jsxDEV5("h2", {
|
|
1408
1609
|
className: "text-2xl font-bold",
|
|
1409
1610
|
children: "Configuration Isolation"
|
|
1410
1611
|
}, undefined, false, undefined, this),
|
|
1411
|
-
/* @__PURE__ */
|
|
1612
|
+
/* @__PURE__ */ jsxDEV5("p", {
|
|
1412
1613
|
className: "text-muted-foreground",
|
|
1413
1614
|
children: [
|
|
1414
1615
|
"Each tenant has its own ",
|
|
1415
|
-
/* @__PURE__ */
|
|
1616
|
+
/* @__PURE__ */ jsxDEV5("code", {
|
|
1416
1617
|
children: "TenantAppConfig"
|
|
1417
1618
|
}, undefined, false, undefined, this),
|
|
1418
1619
|
" which defines:"
|
|
1419
1620
|
]
|
|
1420
1621
|
}, undefined, true, undefined, this),
|
|
1421
|
-
/* @__PURE__ */
|
|
1622
|
+
/* @__PURE__ */ jsxDEV5(CodeBlock5, {
|
|
1422
1623
|
language: "typescript",
|
|
1423
1624
|
code: `type TenantAppConfig = {
|
|
1424
1625
|
tenantId: string;
|
|
@@ -1429,26 +1630,26 @@ function ArchitectureMultiTenancyPage() {
|
|
|
1429
1630
|
featureFlags: Record<string, boolean>;
|
|
1430
1631
|
};`
|
|
1431
1632
|
}, undefined, false, undefined, this),
|
|
1432
|
-
/* @__PURE__ */
|
|
1633
|
+
/* @__PURE__ */ jsxDEV5("p", {
|
|
1433
1634
|
className: "text-muted-foreground mt-2",
|
|
1434
1635
|
children: "This allows you to customize feature flags, integration connections, and knowledge sources per tenant without changing the application code."
|
|
1435
1636
|
}, undefined, false, undefined, this)
|
|
1436
1637
|
]
|
|
1437
1638
|
}, undefined, true, undefined, this),
|
|
1438
|
-
/* @__PURE__ */
|
|
1639
|
+
/* @__PURE__ */ jsxDEV5("div", {
|
|
1439
1640
|
className: "flex items-center gap-4 pt-4",
|
|
1440
1641
|
children: [
|
|
1441
|
-
/* @__PURE__ */
|
|
1642
|
+
/* @__PURE__ */ jsxDEV5(Link5, {
|
|
1442
1643
|
href: "/docs/architecture",
|
|
1443
1644
|
className: "btn-ghost",
|
|
1444
1645
|
children: "Back to Architecture"
|
|
1445
1646
|
}, undefined, false, undefined, this),
|
|
1446
|
-
/* @__PURE__ */
|
|
1647
|
+
/* @__PURE__ */ jsxDEV5(Link5, {
|
|
1447
1648
|
href: "/docs/libraries/multi-tenancy",
|
|
1448
1649
|
className: "btn-primary",
|
|
1449
1650
|
children: [
|
|
1450
1651
|
"Multi-Tenancy Library ",
|
|
1451
|
-
/* @__PURE__ */
|
|
1652
|
+
/* @__PURE__ */ jsxDEV5(ChevronRight5, {
|
|
1452
1653
|
size: 16
|
|
1453
1654
|
}, undefined, false, undefined, this)
|
|
1454
1655
|
]
|
|
@@ -1460,53 +1661,53 @@ function ArchitectureMultiTenancyPage() {
|
|
|
1460
1661
|
}
|
|
1461
1662
|
|
|
1462
1663
|
// src/components/docs/architecture/ArchitectureOverviewPage.tsx
|
|
1463
|
-
import
|
|
1464
|
-
import { ChevronRight as
|
|
1465
|
-
import { jsxDEV as
|
|
1664
|
+
import Link6 from "@contractspec/lib.ui-link";
|
|
1665
|
+
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
1666
|
+
import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
|
|
1466
1667
|
function ArchitectureOverviewPage() {
|
|
1467
|
-
return /* @__PURE__ */
|
|
1668
|
+
return /* @__PURE__ */ jsxDEV6("div", {
|
|
1468
1669
|
className: "space-y-8",
|
|
1469
1670
|
children: [
|
|
1470
|
-
/* @__PURE__ */
|
|
1671
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1471
1672
|
className: "space-y-4",
|
|
1472
1673
|
children: [
|
|
1473
|
-
/* @__PURE__ */
|
|
1674
|
+
/* @__PURE__ */ jsxDEV6("h1", {
|
|
1474
1675
|
className: "text-4xl font-bold",
|
|
1475
1676
|
children: "Architecture"
|
|
1476
1677
|
}, undefined, false, undefined, this),
|
|
1477
|
-
/* @__PURE__ */
|
|
1678
|
+
/* @__PURE__ */ jsxDEV6("p", {
|
|
1478
1679
|
className: "text-muted-foreground",
|
|
1479
|
-
children: "ContractSpec's architecture is built on a foundation of typed specifications served by runtime adapters. This section covers the core architectural concepts: app configuration, integration binding, and knowledge management."
|
|
1680
|
+
children: "ContractSpec's architecture is built on a foundation of typed specifications served by runtime adapters. This section covers the core architectural concepts: app configuration, integration binding, control-plane governance, and knowledge management."
|
|
1480
1681
|
}, undefined, false, undefined, this)
|
|
1481
1682
|
]
|
|
1482
1683
|
}, undefined, true, undefined, this),
|
|
1483
|
-
/* @__PURE__ */
|
|
1684
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1484
1685
|
className: "space-y-4",
|
|
1485
1686
|
children: [
|
|
1486
|
-
/* @__PURE__ */
|
|
1687
|
+
/* @__PURE__ */ jsxDEV6("h2", {
|
|
1487
1688
|
className: "text-2xl font-bold",
|
|
1488
1689
|
children: "Core layers"
|
|
1489
1690
|
}, undefined, false, undefined, this),
|
|
1490
|
-
/* @__PURE__ */
|
|
1691
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1491
1692
|
className: "space-y-6",
|
|
1492
1693
|
children: [
|
|
1493
|
-
/* @__PURE__ */
|
|
1694
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1494
1695
|
className: "space-y-3",
|
|
1495
1696
|
children: [
|
|
1496
|
-
/* @__PURE__ */
|
|
1697
|
+
/* @__PURE__ */ jsxDEV6("h3", {
|
|
1497
1698
|
className: "text-xl font-semibold",
|
|
1498
1699
|
children: "1. Specification Layer"
|
|
1499
1700
|
}, undefined, false, undefined, this),
|
|
1500
|
-
/* @__PURE__ */
|
|
1701
|
+
/* @__PURE__ */ jsxDEV6("p", {
|
|
1501
1702
|
className: "text-muted-foreground",
|
|
1502
1703
|
children: "The foundation of ContractSpec. Typed specifications define what your application can do:"
|
|
1503
1704
|
}, undefined, false, undefined, this),
|
|
1504
|
-
/* @__PURE__ */
|
|
1705
|
+
/* @__PURE__ */ jsxDEV6("ul", {
|
|
1505
1706
|
className: "text-muted-foreground ml-4 list-inside list-disc space-y-2",
|
|
1506
1707
|
children: [
|
|
1507
|
-
/* @__PURE__ */
|
|
1708
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1508
1709
|
children: [
|
|
1509
|
-
/* @__PURE__ */
|
|
1710
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1510
1711
|
href: "/docs/specs/capabilities",
|
|
1511
1712
|
className: "text-violet-400 hover:text-violet-300",
|
|
1512
1713
|
children: "CapabilitySpec"
|
|
@@ -1515,9 +1716,9 @@ function ArchitectureOverviewPage() {
|
|
|
1515
1716
|
"- Operations and their inputs/outputs"
|
|
1516
1717
|
]
|
|
1517
1718
|
}, undefined, true, undefined, this),
|
|
1518
|
-
/* @__PURE__ */
|
|
1719
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1519
1720
|
children: [
|
|
1520
|
-
/* @__PURE__ */
|
|
1721
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1521
1722
|
href: "/docs/specs/dataviews",
|
|
1522
1723
|
className: "text-violet-400 hover:text-violet-300",
|
|
1523
1724
|
children: "DataViewSpec"
|
|
@@ -1526,9 +1727,9 @@ function ArchitectureOverviewPage() {
|
|
|
1526
1727
|
"- Data queries and presentation"
|
|
1527
1728
|
]
|
|
1528
1729
|
}, undefined, true, undefined, this),
|
|
1529
|
-
/* @__PURE__ */
|
|
1730
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1530
1731
|
children: [
|
|
1531
|
-
/* @__PURE__ */
|
|
1732
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1532
1733
|
href: "/docs/specs/workflows",
|
|
1533
1734
|
className: "text-violet-400 hover:text-violet-300",
|
|
1534
1735
|
children: "WorkflowSpec"
|
|
@@ -1537,9 +1738,9 @@ function ArchitectureOverviewPage() {
|
|
|
1537
1738
|
"- Multi-step processes"
|
|
1538
1739
|
]
|
|
1539
1740
|
}, undefined, true, undefined, this),
|
|
1540
|
-
/* @__PURE__ */
|
|
1741
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1541
1742
|
children: [
|
|
1542
|
-
/* @__PURE__ */
|
|
1743
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1543
1744
|
href: "/docs/specs/policy",
|
|
1544
1745
|
className: "text-violet-400 hover:text-violet-300",
|
|
1545
1746
|
children: "PolicySpec"
|
|
@@ -1548,9 +1749,9 @@ function ArchitectureOverviewPage() {
|
|
|
1548
1749
|
"- Access control and data protection"
|
|
1549
1750
|
]
|
|
1550
1751
|
}, undefined, true, undefined, this),
|
|
1551
|
-
/* @__PURE__ */
|
|
1752
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1552
1753
|
children: [
|
|
1553
|
-
/* @__PURE__ */
|
|
1754
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1554
1755
|
href: "/docs/integrations/spec-model",
|
|
1555
1756
|
className: "text-violet-400 hover:text-violet-300",
|
|
1556
1757
|
children: "IntegrationSpec"
|
|
@@ -1559,9 +1760,9 @@ function ArchitectureOverviewPage() {
|
|
|
1559
1760
|
"- External service providers"
|
|
1560
1761
|
]
|
|
1561
1762
|
}, undefined, true, undefined, this),
|
|
1562
|
-
/* @__PURE__ */
|
|
1763
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1563
1764
|
children: [
|
|
1564
|
-
/* @__PURE__ */
|
|
1765
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1565
1766
|
href: "/docs/knowledge/spaces",
|
|
1566
1767
|
className: "text-violet-400 hover:text-violet-300",
|
|
1567
1768
|
children: "KnowledgeSpaceSpec"
|
|
@@ -1574,23 +1775,23 @@ function ArchitectureOverviewPage() {
|
|
|
1574
1775
|
}, undefined, true, undefined, this)
|
|
1575
1776
|
]
|
|
1576
1777
|
}, undefined, true, undefined, this),
|
|
1577
|
-
/* @__PURE__ */
|
|
1778
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1578
1779
|
className: "space-y-3",
|
|
1579
1780
|
children: [
|
|
1580
|
-
/* @__PURE__ */
|
|
1781
|
+
/* @__PURE__ */ jsxDEV6("h3", {
|
|
1581
1782
|
className: "text-xl font-semibold",
|
|
1582
1783
|
children: "2. Configuration Layer"
|
|
1583
1784
|
}, undefined, false, undefined, this),
|
|
1584
|
-
/* @__PURE__ */
|
|
1785
|
+
/* @__PURE__ */ jsxDEV6("p", {
|
|
1585
1786
|
className: "text-muted-foreground",
|
|
1586
1787
|
children: "How applications are configured and customized:"
|
|
1587
1788
|
}, undefined, false, undefined, this),
|
|
1588
|
-
/* @__PURE__ */
|
|
1789
|
+
/* @__PURE__ */ jsxDEV6("ul", {
|
|
1589
1790
|
className: "text-muted-foreground ml-4 list-inside list-disc space-y-2",
|
|
1590
1791
|
children: [
|
|
1591
|
-
/* @__PURE__ */
|
|
1792
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1592
1793
|
children: [
|
|
1593
|
-
/* @__PURE__ */
|
|
1794
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1594
1795
|
href: "/docs/architecture/app-config",
|
|
1595
1796
|
className: "text-violet-400 hover:text-violet-300",
|
|
1596
1797
|
children: "AppBlueprintSpec"
|
|
@@ -1599,9 +1800,9 @@ function ArchitectureOverviewPage() {
|
|
|
1599
1800
|
"- Global, versioned app definition"
|
|
1600
1801
|
]
|
|
1601
1802
|
}, undefined, true, undefined, this),
|
|
1602
|
-
/* @__PURE__ */
|
|
1803
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1603
1804
|
children: [
|
|
1604
|
-
/* @__PURE__ */
|
|
1805
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1605
1806
|
href: "/docs/architecture/app-config",
|
|
1606
1807
|
className: "text-violet-400 hover:text-violet-300",
|
|
1607
1808
|
children: "TenantAppConfig"
|
|
@@ -1610,9 +1811,9 @@ function ArchitectureOverviewPage() {
|
|
|
1610
1811
|
"- Per-tenant, per-environment configuration"
|
|
1611
1812
|
]
|
|
1612
1813
|
}, undefined, true, undefined, this),
|
|
1613
|
-
/* @__PURE__ */
|
|
1814
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1614
1815
|
children: [
|
|
1615
|
-
/* @__PURE__ */
|
|
1816
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1616
1817
|
href: "/docs/architecture/integration-binding",
|
|
1617
1818
|
className: "text-violet-400 hover:text-violet-300",
|
|
1618
1819
|
children: "AppIntegrationBinding"
|
|
@@ -1621,9 +1822,9 @@ function ArchitectureOverviewPage() {
|
|
|
1621
1822
|
"- How apps use integrations"
|
|
1622
1823
|
]
|
|
1623
1824
|
}, undefined, true, undefined, this),
|
|
1624
|
-
/* @__PURE__ */
|
|
1825
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1625
1826
|
children: [
|
|
1626
|
-
/* @__PURE__ */
|
|
1827
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1627
1828
|
href: "/docs/architecture/knowledge-binding",
|
|
1628
1829
|
className: "text-violet-400 hover:text-violet-300",
|
|
1629
1830
|
children: "AppKnowledgeBinding"
|
|
@@ -1636,55 +1837,66 @@ function ArchitectureOverviewPage() {
|
|
|
1636
1837
|
}, undefined, true, undefined, this)
|
|
1637
1838
|
]
|
|
1638
1839
|
}, undefined, true, undefined, this),
|
|
1639
|
-
/* @__PURE__ */
|
|
1840
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1640
1841
|
className: "space-y-3",
|
|
1641
1842
|
children: [
|
|
1642
|
-
/* @__PURE__ */
|
|
1843
|
+
/* @__PURE__ */ jsxDEV6("h3", {
|
|
1643
1844
|
className: "text-xl font-semibold",
|
|
1644
1845
|
children: "3. Runtime Layer"
|
|
1645
1846
|
}, undefined, false, undefined, this),
|
|
1646
|
-
/* @__PURE__ */
|
|
1847
|
+
/* @__PURE__ */ jsxDEV6("p", {
|
|
1647
1848
|
className: "text-muted-foreground",
|
|
1648
1849
|
children: "How specifications are executed at runtime:"
|
|
1649
1850
|
}, undefined, false, undefined, this),
|
|
1650
|
-
/* @__PURE__ */
|
|
1851
|
+
/* @__PURE__ */ jsxDEV6("ul", {
|
|
1651
1852
|
className: "text-muted-foreground ml-4 list-inside list-disc space-y-2",
|
|
1652
1853
|
children: [
|
|
1653
|
-
/* @__PURE__ */
|
|
1854
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1654
1855
|
children: [
|
|
1655
|
-
/* @__PURE__ */
|
|
1856
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1656
1857
|
children: "ResolvedAppConfig"
|
|
1657
1858
|
}, undefined, false, undefined, this),
|
|
1658
1859
|
" - Merged blueprint + tenant config"
|
|
1659
1860
|
]
|
|
1660
1861
|
}, undefined, true, undefined, this),
|
|
1661
|
-
/* @__PURE__ */
|
|
1862
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1662
1863
|
children: [
|
|
1663
|
-
/* @__PURE__ */
|
|
1864
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1664
1865
|
children: "Policy Decision Point (PDP)"
|
|
1665
1866
|
}, undefined, false, undefined, this),
|
|
1666
1867
|
" - Enforces policies on every operation"
|
|
1667
1868
|
]
|
|
1668
1869
|
}, undefined, true, undefined, this),
|
|
1669
|
-
/* @__PURE__ */
|
|
1870
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1670
1871
|
children: [
|
|
1671
|
-
/* @__PURE__ */
|
|
1872
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1873
|
+
href: "/docs/architecture/control-plane",
|
|
1874
|
+
className: "text-violet-400 hover:text-violet-300",
|
|
1875
|
+
children: "Control Plane Runtime"
|
|
1876
|
+
}, undefined, false, undefined, this),
|
|
1877
|
+
" ",
|
|
1878
|
+
"- Deterministic intent to plan to policy to execution loop"
|
|
1879
|
+
]
|
|
1880
|
+
}, undefined, true, undefined, this),
|
|
1881
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1882
|
+
children: [
|
|
1883
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1672
1884
|
children: "Presentation Runtime"
|
|
1673
1885
|
}, undefined, false, undefined, this),
|
|
1674
1886
|
" - React and React Native renderers"
|
|
1675
1887
|
]
|
|
1676
1888
|
}, undefined, true, undefined, this),
|
|
1677
|
-
/* @__PURE__ */
|
|
1889
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1678
1890
|
children: [
|
|
1679
|
-
/* @__PURE__ */
|
|
1891
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1680
1892
|
children: "Integration Connectors"
|
|
1681
1893
|
}, undefined, false, undefined, this),
|
|
1682
1894
|
" - Execute external API calls"
|
|
1683
1895
|
]
|
|
1684
1896
|
}, undefined, true, undefined, this),
|
|
1685
|
-
/* @__PURE__ */
|
|
1897
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1686
1898
|
children: [
|
|
1687
|
-
/* @__PURE__ */
|
|
1899
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1688
1900
|
children: "Knowledge Retrieval"
|
|
1689
1901
|
}, undefined, false, undefined, this),
|
|
1690
1902
|
" - Query vector databases and knowledge sources"
|
|
@@ -1698,110 +1910,110 @@ function ArchitectureOverviewPage() {
|
|
|
1698
1910
|
}, undefined, true, undefined, this)
|
|
1699
1911
|
]
|
|
1700
1912
|
}, undefined, true, undefined, this),
|
|
1701
|
-
/* @__PURE__ */
|
|
1913
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1702
1914
|
className: "space-y-4",
|
|
1703
1915
|
children: [
|
|
1704
|
-
/* @__PURE__ */
|
|
1916
|
+
/* @__PURE__ */ jsxDEV6("h2", {
|
|
1705
1917
|
className: "text-2xl font-bold",
|
|
1706
1918
|
children: "Configuration model"
|
|
1707
1919
|
}, undefined, false, undefined, this),
|
|
1708
|
-
/* @__PURE__ */
|
|
1920
|
+
/* @__PURE__ */ jsxDEV6("p", {
|
|
1709
1921
|
className: "text-muted-foreground",
|
|
1710
1922
|
children: "ContractSpec uses a three-tier configuration model:"
|
|
1711
1923
|
}, undefined, false, undefined, this),
|
|
1712
|
-
/* @__PURE__ */
|
|
1924
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1713
1925
|
className: "border-border/50 overflow-x-auto rounded-lg border",
|
|
1714
|
-
children: /* @__PURE__ */
|
|
1926
|
+
children: /* @__PURE__ */ jsxDEV6("table", {
|
|
1715
1927
|
className: "w-full text-left text-sm",
|
|
1716
1928
|
children: [
|
|
1717
|
-
/* @__PURE__ */
|
|
1929
|
+
/* @__PURE__ */ jsxDEV6("thead", {
|
|
1718
1930
|
className: "bg-card/50",
|
|
1719
|
-
children: /* @__PURE__ */
|
|
1931
|
+
children: /* @__PURE__ */ jsxDEV6("tr", {
|
|
1720
1932
|
className: "border-border/50 border-b",
|
|
1721
1933
|
children: [
|
|
1722
|
-
/* @__PURE__ */
|
|
1934
|
+
/* @__PURE__ */ jsxDEV6("th", {
|
|
1723
1935
|
className: "px-4 py-3 font-semibold",
|
|
1724
1936
|
children: "Layer"
|
|
1725
1937
|
}, undefined, false, undefined, this),
|
|
1726
|
-
/* @__PURE__ */
|
|
1938
|
+
/* @__PURE__ */ jsxDEV6("th", {
|
|
1727
1939
|
className: "px-4 py-3 font-semibold",
|
|
1728
1940
|
children: "Type"
|
|
1729
1941
|
}, undefined, false, undefined, this),
|
|
1730
|
-
/* @__PURE__ */
|
|
1942
|
+
/* @__PURE__ */ jsxDEV6("th", {
|
|
1731
1943
|
className: "px-4 py-3 font-semibold",
|
|
1732
1944
|
children: "Scope"
|
|
1733
1945
|
}, undefined, false, undefined, this),
|
|
1734
|
-
/* @__PURE__ */
|
|
1946
|
+
/* @__PURE__ */ jsxDEV6("th", {
|
|
1735
1947
|
className: "px-4 py-3 font-semibold",
|
|
1736
1948
|
children: "Storage"
|
|
1737
1949
|
}, undefined, false, undefined, this)
|
|
1738
1950
|
]
|
|
1739
1951
|
}, undefined, true, undefined, this)
|
|
1740
1952
|
}, undefined, false, undefined, this),
|
|
1741
|
-
/* @__PURE__ */
|
|
1953
|
+
/* @__PURE__ */ jsxDEV6("tbody", {
|
|
1742
1954
|
className: "divide-border/50 divide-y",
|
|
1743
1955
|
children: [
|
|
1744
|
-
/* @__PURE__ */
|
|
1956
|
+
/* @__PURE__ */ jsxDEV6("tr", {
|
|
1745
1957
|
children: [
|
|
1746
|
-
/* @__PURE__ */
|
|
1958
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1747
1959
|
className: "px-4 py-3 align-top",
|
|
1748
|
-
children: /* @__PURE__ */
|
|
1960
|
+
children: /* @__PURE__ */ jsxDEV6("strong", {
|
|
1749
1961
|
children: "Blueprint"
|
|
1750
1962
|
}, undefined, false, undefined, this)
|
|
1751
1963
|
}, undefined, false, undefined, this),
|
|
1752
|
-
/* @__PURE__ */
|
|
1964
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1753
1965
|
className: "px-4 py-3 align-top font-mono text-xs",
|
|
1754
1966
|
children: "AppBlueprintSpec"
|
|
1755
1967
|
}, undefined, false, undefined, this),
|
|
1756
|
-
/* @__PURE__ */
|
|
1968
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1757
1969
|
className: "px-4 py-3 align-top",
|
|
1758
1970
|
children: "Global, versioned, no tenant info"
|
|
1759
1971
|
}, undefined, false, undefined, this),
|
|
1760
|
-
/* @__PURE__ */
|
|
1972
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1761
1973
|
className: "px-4 py-3 align-top",
|
|
1762
1974
|
children: "Version control, immutable"
|
|
1763
1975
|
}, undefined, false, undefined, this)
|
|
1764
1976
|
]
|
|
1765
1977
|
}, undefined, true, undefined, this),
|
|
1766
|
-
/* @__PURE__ */
|
|
1978
|
+
/* @__PURE__ */ jsxDEV6("tr", {
|
|
1767
1979
|
children: [
|
|
1768
|
-
/* @__PURE__ */
|
|
1980
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1769
1981
|
className: "px-4 py-3 align-top",
|
|
1770
|
-
children: /* @__PURE__ */
|
|
1982
|
+
children: /* @__PURE__ */ jsxDEV6("strong", {
|
|
1771
1983
|
children: "Tenant Config"
|
|
1772
1984
|
}, undefined, false, undefined, this)
|
|
1773
1985
|
}, undefined, false, undefined, this),
|
|
1774
|
-
/* @__PURE__ */
|
|
1986
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1775
1987
|
className: "px-4 py-3 align-top font-mono text-xs",
|
|
1776
1988
|
children: "TenantAppConfig"
|
|
1777
1989
|
}, undefined, false, undefined, this),
|
|
1778
|
-
/* @__PURE__ */
|
|
1990
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1779
1991
|
className: "px-4 py-3 align-top",
|
|
1780
1992
|
children: "Per-tenant, per-environment"
|
|
1781
1993
|
}, undefined, false, undefined, this),
|
|
1782
|
-
/* @__PURE__ */
|
|
1994
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1783
1995
|
className: "px-4 py-3 align-top",
|
|
1784
1996
|
children: "Database, mutable"
|
|
1785
1997
|
}, undefined, false, undefined, this)
|
|
1786
1998
|
]
|
|
1787
1999
|
}, undefined, true, undefined, this),
|
|
1788
|
-
/* @__PURE__ */
|
|
2000
|
+
/* @__PURE__ */ jsxDEV6("tr", {
|
|
1789
2001
|
children: [
|
|
1790
|
-
/* @__PURE__ */
|
|
2002
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1791
2003
|
className: "px-4 py-3 align-top",
|
|
1792
|
-
children: /* @__PURE__ */
|
|
2004
|
+
children: /* @__PURE__ */ jsxDEV6("strong", {
|
|
1793
2005
|
children: "Resolved Config"
|
|
1794
2006
|
}, undefined, false, undefined, this)
|
|
1795
2007
|
}, undefined, false, undefined, this),
|
|
1796
|
-
/* @__PURE__ */
|
|
2008
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1797
2009
|
className: "px-4 py-3 align-top font-mono text-xs",
|
|
1798
2010
|
children: "ResolvedAppConfig"
|
|
1799
2011
|
}, undefined, false, undefined, this),
|
|
1800
|
-
/* @__PURE__ */
|
|
2012
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1801
2013
|
className: "px-4 py-3 align-top",
|
|
1802
2014
|
children: "Runtime, ephemeral"
|
|
1803
2015
|
}, undefined, false, undefined, this),
|
|
1804
|
-
/* @__PURE__ */
|
|
2016
|
+
/* @__PURE__ */ jsxDEV6("td", {
|
|
1805
2017
|
className: "px-4 py-3 align-top",
|
|
1806
2018
|
children: "In-memory, not persisted"
|
|
1807
2019
|
}, undefined, false, undefined, this)
|
|
@@ -1814,59 +2026,59 @@ function ArchitectureOverviewPage() {
|
|
|
1814
2026
|
}, undefined, false, undefined, this)
|
|
1815
2027
|
]
|
|
1816
2028
|
}, undefined, true, undefined, this),
|
|
1817
|
-
/* @__PURE__ */
|
|
2029
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1818
2030
|
className: "space-y-4",
|
|
1819
2031
|
children: [
|
|
1820
|
-
/* @__PURE__ */
|
|
2032
|
+
/* @__PURE__ */ jsxDEV6("h2", {
|
|
1821
2033
|
className: "text-2xl font-bold",
|
|
1822
2034
|
children: "Key architectural principles"
|
|
1823
2035
|
}, undefined, false, undefined, this),
|
|
1824
|
-
/* @__PURE__ */
|
|
2036
|
+
/* @__PURE__ */ jsxDEV6("ul", {
|
|
1825
2037
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1826
2038
|
children: [
|
|
1827
|
-
/* @__PURE__ */
|
|
2039
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1828
2040
|
children: [
|
|
1829
|
-
/* @__PURE__ */
|
|
2041
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1830
2042
|
children: "Spec-first"
|
|
1831
2043
|
}, undefined, false, undefined, this),
|
|
1832
2044
|
" - Everything is defined declaratively before code generation"
|
|
1833
2045
|
]
|
|
1834
2046
|
}, undefined, true, undefined, this),
|
|
1835
|
-
/* @__PURE__ */
|
|
2047
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1836
2048
|
children: [
|
|
1837
|
-
/* @__PURE__ */
|
|
2049
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1838
2050
|
children: "Type-safe"
|
|
1839
2051
|
}, undefined, false, undefined, this),
|
|
1840
2052
|
" - All specifications are strongly typed and validated at compile time"
|
|
1841
2053
|
]
|
|
1842
2054
|
}, undefined, true, undefined, this),
|
|
1843
|
-
/* @__PURE__ */
|
|
2055
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1844
2056
|
children: [
|
|
1845
|
-
/* @__PURE__ */
|
|
2057
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1846
2058
|
children: "Policy-enforced"
|
|
1847
2059
|
}, undefined, false, undefined, this),
|
|
1848
2060
|
" - Every operation passes through the PDP"
|
|
1849
2061
|
]
|
|
1850
2062
|
}, undefined, true, undefined, this),
|
|
1851
|
-
/* @__PURE__ */
|
|
2063
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1852
2064
|
children: [
|
|
1853
|
-
/* @__PURE__ */
|
|
2065
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1854
2066
|
children: "Multi-tenant by default"
|
|
1855
2067
|
}, undefined, false, undefined, this),
|
|
1856
2068
|
" - Tenant isolation is built-in, not bolted on"
|
|
1857
2069
|
]
|
|
1858
2070
|
}, undefined, true, undefined, this),
|
|
1859
|
-
/* @__PURE__ */
|
|
2071
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1860
2072
|
children: [
|
|
1861
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1862
2074
|
children: "Environment-aware"
|
|
1863
2075
|
}, undefined, false, undefined, this),
|
|
1864
2076
|
" - Separate configurations for sandbox, staging, production"
|
|
1865
2077
|
]
|
|
1866
2078
|
}, undefined, true, undefined, this),
|
|
1867
|
-
/* @__PURE__ */
|
|
2079
|
+
/* @__PURE__ */ jsxDEV6("li", {
|
|
1868
2080
|
children: [
|
|
1869
|
-
/* @__PURE__ */
|
|
2081
|
+
/* @__PURE__ */ jsxDEV6("strong", {
|
|
1870
2082
|
children: "Auditable"
|
|
1871
2083
|
}, undefined, false, undefined, this),
|
|
1872
2084
|
" - All operations are logged for compliance and debugging"
|
|
@@ -1876,25 +2088,30 @@ function ArchitectureOverviewPage() {
|
|
|
1876
2088
|
}, undefined, true, undefined, this)
|
|
1877
2089
|
]
|
|
1878
2090
|
}, undefined, true, undefined, this),
|
|
1879
|
-
/* @__PURE__ */
|
|
2091
|
+
/* @__PURE__ */ jsxDEV6("div", {
|
|
1880
2092
|
className: "flex items-center gap-4 pt-4",
|
|
1881
2093
|
children: [
|
|
1882
|
-
/* @__PURE__ */
|
|
2094
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1883
2095
|
href: "/docs/architecture/app-config",
|
|
1884
2096
|
className: "btn-primary",
|
|
1885
2097
|
children: [
|
|
1886
2098
|
"App Configuration ",
|
|
1887
|
-
/* @__PURE__ */
|
|
2099
|
+
/* @__PURE__ */ jsxDEV6(ChevronRight6, {
|
|
1888
2100
|
size: 16
|
|
1889
2101
|
}, undefined, false, undefined, this)
|
|
1890
2102
|
]
|
|
1891
2103
|
}, undefined, true, undefined, this),
|
|
1892
|
-
/* @__PURE__ */
|
|
2104
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
2105
|
+
href: "/docs/architecture/control-plane",
|
|
2106
|
+
className: "btn-ghost",
|
|
2107
|
+
children: "Control Plane Runtime"
|
|
2108
|
+
}, undefined, false, undefined, this),
|
|
2109
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1893
2110
|
href: "/docs/integrations",
|
|
1894
2111
|
className: "btn-ghost",
|
|
1895
2112
|
children: "Integrations"
|
|
1896
2113
|
}, undefined, false, undefined, this),
|
|
1897
|
-
/* @__PURE__ */
|
|
2114
|
+
/* @__PURE__ */ jsxDEV6(Link6, {
|
|
1898
2115
|
href: "/docs/knowledge",
|
|
1899
2116
|
className: "btn-ghost",
|
|
1900
2117
|
children: "Knowledge & Context"
|
|
@@ -1909,5 +2126,6 @@ export {
|
|
|
1909
2126
|
ArchitectureMultiTenancyPage,
|
|
1910
2127
|
ArchitectureKnowledgeBindingPage,
|
|
1911
2128
|
ArchitectureIntegrationBindingPage,
|
|
2129
|
+
ArchitectureControlPlanePage,
|
|
1912
2130
|
ArchitectureAppConfigPage
|
|
1913
2131
|
};
|