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