@contractspec/bundle.library 3.10.1 → 3.10.2

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.
Files changed (60) hide show
  1. package/.turbo/turbo-build.log +212 -206
  2. package/CHANGELOG.md +31 -0
  3. package/dist/components/docs/DocsIndexPage.js +2 -2
  4. package/dist/components/docs/docsManifest.js +1 -1
  5. package/dist/components/docs/guides/GuideProviderBackedKnowledgePage.d.ts +1 -0
  6. package/dist/components/docs/guides/GuideProviderBackedKnowledgePage.js +73 -0
  7. package/dist/components/docs/guides/GuidesIndexPage.js +1 -1
  8. package/dist/components/docs/guides/guides.docblocks.js +10 -1
  9. package/dist/components/docs/guides/index.d.ts +1 -0
  10. package/dist/components/docs/guides/index.js +132 -52
  11. package/dist/components/docs/index.js +414 -284
  12. package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  13. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +1 -1
  14. package/dist/components/docs/integrations/IntegrationsGoogleDrivePage.d.ts +1 -0
  15. package/dist/components/docs/integrations/IntegrationsGoogleDrivePage.js +22 -0
  16. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  17. package/dist/components/docs/integrations/index.d.ts +1 -0
  18. package/dist/components/docs/integrations/index.js +65 -45
  19. package/dist/components/docs/knowledge/KnowledgeGovernancePage.d.ts +1 -0
  20. package/dist/components/docs/knowledge/KnowledgeGovernancePage.js +23 -0
  21. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  22. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +11 -2
  23. package/dist/components/docs/knowledge/index.d.ts +1 -0
  24. package/dist/components/docs/knowledge/index.js +49 -19
  25. package/dist/index.js +430 -300
  26. package/dist/node/components/docs/DocsIndexPage.js +2 -2
  27. package/dist/node/components/docs/docsManifest.js +1 -1
  28. package/dist/node/components/docs/guides/GuideProviderBackedKnowledgePage.js +72 -0
  29. package/dist/node/components/docs/guides/GuidesIndexPage.js +1 -1
  30. package/dist/node/components/docs/guides/guides.docblocks.js +10 -1
  31. package/dist/node/components/docs/guides/index.js +132 -52
  32. package/dist/node/components/docs/index.js +414 -284
  33. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  34. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +1 -1
  35. package/dist/node/components/docs/integrations/IntegrationsGoogleDrivePage.js +21 -0
  36. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  37. package/dist/node/components/docs/integrations/index.js +65 -45
  38. package/dist/node/components/docs/knowledge/KnowledgeGovernancePage.js +22 -0
  39. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  40. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +11 -2
  41. package/dist/node/components/docs/knowledge/index.js +49 -19
  42. package/dist/node/index.js +430 -300
  43. package/package.json +59 -23
  44. package/src/components/docs/docsManifest.ts +62 -0
  45. package/src/components/docs/generated/docs-index._common.json +32 -0
  46. package/src/components/docs/generated/docs-index.manifest.json +2 -2
  47. package/src/components/docs/generated/docs-index.notifications.json +7 -7
  48. package/src/components/docs/guides/GuideProviderBackedKnowledgePage.tsx +191 -0
  49. package/src/components/docs/guides/GuidesIndexPage.tsx +7 -0
  50. package/src/components/docs/guides/guides.docblocks.ts +20 -0
  51. package/src/components/docs/guides/index.ts +1 -0
  52. package/src/components/docs/integrations/IntegrationsGmailPage.tsx +23 -2
  53. package/src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx +2 -2
  54. package/src/components/docs/integrations/IntegrationsGoogleDrivePage.tsx +88 -0
  55. package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +1 -0
  56. package/src/components/docs/integrations/index.ts +1 -0
  57. package/src/components/docs/knowledge/KnowledgeGovernancePage.tsx +94 -0
  58. package/src/components/docs/knowledge/KnowledgeOverviewPage.tsx +10 -0
  59. package/src/components/docs/knowledge/KnowledgeSourcesPage.tsx +45 -0
  60. package/src/components/docs/knowledge/index.ts +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/bundle.library",
3
- "version": "3.10.1",
3
+ "version": "3.10.2",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rm -rf dist",
@@ -534,6 +534,12 @@
534
534
  "node": "./dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js",
535
535
  "default": "./dist/components/docs/guides/GuideNextjsOneEndpointPage.js"
536
536
  },
537
+ "./components/docs/guides/GuideProviderBackedKnowledgePage": {
538
+ "types": "./dist/components/docs/guides/GuideProviderBackedKnowledgePage.d.ts",
539
+ "bun": "./dist/components/docs/guides/GuideProviderBackedKnowledgePage.js",
540
+ "node": "./dist/node/components/docs/guides/GuideProviderBackedKnowledgePage.js",
541
+ "default": "./dist/components/docs/guides/GuideProviderBackedKnowledgePage.js"
542
+ },
537
543
  "./components/docs/guides/GuideReleaseCapsulesPage": {
538
544
  "types": "./dist/components/docs/guides/GuideReleaseCapsulesPage.d.ts",
539
545
  "bun": "./dist/components/docs/guides/GuideReleaseCapsulesPage.js",
@@ -594,6 +600,12 @@
594
600
  "node": "./dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js",
595
601
  "default": "./dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js"
596
602
  },
603
+ "./components/docs/integrations/IntegrationsGoogleDrivePage": {
604
+ "types": "./dist/components/docs/integrations/IntegrationsGoogleDrivePage.d.ts",
605
+ "bun": "./dist/components/docs/integrations/IntegrationsGoogleDrivePage.js",
606
+ "node": "./dist/node/components/docs/integrations/IntegrationsGoogleDrivePage.js",
607
+ "default": "./dist/components/docs/integrations/IntegrationsGoogleDrivePage.js"
608
+ },
597
609
  "./components/docs/integrations/IntegrationsHealthRoutingPage": {
598
610
  "types": "./dist/components/docs/integrations/IntegrationsHealthRoutingPage.d.ts",
599
611
  "bun": "./dist/components/docs/integrations/IntegrationsHealthRoutingPage.js",
@@ -750,6 +762,12 @@
750
762
  "node": "./dist/node/components/docs/knowledge/KnowledgeExamplesPage.js",
751
763
  "default": "./dist/components/docs/knowledge/KnowledgeExamplesPage.js"
752
764
  },
765
+ "./components/docs/knowledge/KnowledgeGovernancePage": {
766
+ "types": "./dist/components/docs/knowledge/KnowledgeGovernancePage.d.ts",
767
+ "bun": "./dist/components/docs/knowledge/KnowledgeGovernancePage.js",
768
+ "node": "./dist/node/components/docs/knowledge/KnowledgeGovernancePage.js",
769
+ "default": "./dist/components/docs/knowledge/KnowledgeGovernancePage.js"
770
+ },
753
771
  "./components/docs/knowledge/KnowledgeOverviewPage": {
754
772
  "types": "./dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts",
755
773
  "bun": "./dist/components/docs/knowledge/KnowledgeOverviewPage.js",
@@ -2028,27 +2046,27 @@
2028
2046
  "react": "19.2.0"
2029
2047
  },
2030
2048
  "dependencies": {
2031
- "@contractspec/bundle.workspace": "4.7.0",
2049
+ "@contractspec/bundle.workspace": "4.7.1",
2032
2050
  "@apollo/client": "^4.1.7",
2033
2051
  "@modelcontextprotocol/sdk": "^1.29.0",
2034
- "@contractspec/example.data-grid-showcase": "3.8.24",
2035
- "@contractspec/lib.ai-providers": "3.7.21",
2036
- "@contractspec/lib.contracts-spec": "6.3.0",
2037
- "@contractspec/lib.contracts-library": "3.7.28",
2038
- "@contractspec/lib.content-gen": "3.7.28",
2039
- "@contractspec/lib.contracts-runtime-server-mcp": "3.8.8",
2040
- "@contractspec/lib.design-system": "4.4.3",
2041
- "@contractspec/lib.surface-runtime": "0.5.28",
2042
- "@contractspec/lib.provider-ranking": "0.7.21",
2043
- "@contractspec/lib.example-shared-ui": "7.0.9",
2044
- "@contractspec/lib.knowledge": "3.8.4",
2045
- "@contractspec/lib.logger": "3.7.21",
2046
- "@contractspec/lib.runtime-sandbox": "3.0.7",
2052
+ "@contractspec/example.data-grid-showcase": "3.8.25",
2053
+ "@contractspec/lib.ai-providers": "3.7.22",
2054
+ "@contractspec/lib.contracts-spec": "6.4.0",
2055
+ "@contractspec/lib.contracts-library": "3.7.29",
2056
+ "@contractspec/lib.content-gen": "3.7.29",
2057
+ "@contractspec/lib.contracts-runtime-server-mcp": "3.8.9",
2058
+ "@contractspec/lib.design-system": "4.4.4",
2059
+ "@contractspec/lib.surface-runtime": "0.5.29",
2060
+ "@contractspec/lib.provider-ranking": "0.7.22",
2061
+ "@contractspec/lib.example-shared-ui": "7.0.10",
2062
+ "@contractspec/lib.knowledge": "3.9.0",
2063
+ "@contractspec/lib.logger": "3.7.22",
2064
+ "@contractspec/lib.runtime-sandbox": "3.0.8",
2047
2065
  "@contractspec/lib.schema": "3.7.14",
2048
- "@contractspec/lib.ui-kit-web": "3.13.3",
2049
- "@contractspec/lib.ui-link": "3.7.23",
2050
- "@contractspec/module.context-storage": "0.7.27",
2051
- "@contractspec/module.examples": "4.0.9",
2066
+ "@contractspec/lib.ui-kit-web": "3.13.4",
2067
+ "@contractspec/lib.ui-link": "3.7.24",
2068
+ "@contractspec/module.context-storage": "0.7.28",
2069
+ "@contractspec/module.examples": "4.0.10",
2052
2070
  "@dnd-kit/core": "^6.1.0",
2053
2071
  "@dnd-kit/sortable": "^10.0.0",
2054
2072
  "@dnd-kit/utilities": "^3.2.2",
@@ -2064,10 +2082,10 @@
2064
2082
  "posthog-react-native": "^4.43.10",
2065
2083
  "react-hook-form": "^7.74.0",
2066
2084
  "zod": "^4.3.5",
2067
- "@contractspec/lib.contracts-integrations": "3.9.0",
2068
- "@contractspec/lib.contracts-runtime-server-rest": "3.9.1",
2069
- "@contractspec/lib.contracts-runtime-server-graphql": "3.8.7",
2070
- "@contractspec/lib.contracts-runtime-client-react": "3.14.1"
2085
+ "@contractspec/lib.contracts-integrations": "3.10.0",
2086
+ "@contractspec/lib.contracts-runtime-server-rest": "3.9.2",
2087
+ "@contractspec/lib.contracts-runtime-server-graphql": "3.8.8",
2088
+ "@contractspec/lib.contracts-runtime-client-react": "3.14.2"
2071
2089
  },
2072
2090
  "devDependencies": {
2073
2091
  "@types/react": "~19.2.14",
@@ -2601,6 +2619,12 @@
2601
2619
  "node": "./dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js",
2602
2620
  "default": "./dist/components/docs/guides/GuideNextjsOneEndpointPage.js"
2603
2621
  },
2622
+ "./components/docs/guides/GuideProviderBackedKnowledgePage": {
2623
+ "types": "./dist/components/docs/guides/GuideProviderBackedKnowledgePage.d.ts",
2624
+ "bun": "./dist/components/docs/guides/GuideProviderBackedKnowledgePage.js",
2625
+ "node": "./dist/node/components/docs/guides/GuideProviderBackedKnowledgePage.js",
2626
+ "default": "./dist/components/docs/guides/GuideProviderBackedKnowledgePage.js"
2627
+ },
2604
2628
  "./components/docs/guides/GuideReleaseCapsulesPage": {
2605
2629
  "types": "./dist/components/docs/guides/GuideReleaseCapsulesPage.d.ts",
2606
2630
  "bun": "./dist/components/docs/guides/GuideReleaseCapsulesPage.js",
@@ -2661,6 +2685,12 @@
2661
2685
  "node": "./dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js",
2662
2686
  "default": "./dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js"
2663
2687
  },
2688
+ "./components/docs/integrations/IntegrationsGoogleDrivePage": {
2689
+ "types": "./dist/components/docs/integrations/IntegrationsGoogleDrivePage.d.ts",
2690
+ "bun": "./dist/components/docs/integrations/IntegrationsGoogleDrivePage.js",
2691
+ "node": "./dist/node/components/docs/integrations/IntegrationsGoogleDrivePage.js",
2692
+ "default": "./dist/components/docs/integrations/IntegrationsGoogleDrivePage.js"
2693
+ },
2664
2694
  "./components/docs/integrations/IntegrationsHealthRoutingPage": {
2665
2695
  "types": "./dist/components/docs/integrations/IntegrationsHealthRoutingPage.d.ts",
2666
2696
  "bun": "./dist/components/docs/integrations/IntegrationsHealthRoutingPage.js",
@@ -2817,6 +2847,12 @@
2817
2847
  "node": "./dist/node/components/docs/knowledge/KnowledgeExamplesPage.js",
2818
2848
  "default": "./dist/components/docs/knowledge/KnowledgeExamplesPage.js"
2819
2849
  },
2850
+ "./components/docs/knowledge/KnowledgeGovernancePage": {
2851
+ "types": "./dist/components/docs/knowledge/KnowledgeGovernancePage.d.ts",
2852
+ "bun": "./dist/components/docs/knowledge/KnowledgeGovernancePage.js",
2853
+ "node": "./dist/node/components/docs/knowledge/KnowledgeGovernancePage.js",
2854
+ "default": "./dist/components/docs/knowledge/KnowledgeGovernancePage.js"
2855
+ },
2820
2856
  "./components/docs/knowledge/KnowledgeOverviewPage": {
2821
2857
  "types": "./dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts",
2822
2858
  "bun": "./dist/components/docs/knowledge/KnowledgeOverviewPage.js",
@@ -411,6 +411,23 @@ export const DOCS_PAGES: readonly DocsPageEntry[] = [
411
411
  audience: 'operator',
412
412
  ctaMode: 'oss-next',
413
413
  },
414
+ {
415
+ href: '/docs/guides/provider-backed-knowledge',
416
+ title: 'Adopt provider-backed knowledge',
417
+ description:
418
+ 'Ingest Gmail and Google Drive into governed knowledge spaces with persisted provider deltas and mutation gates.',
419
+ section: 'build',
420
+ order: 68,
421
+ navTitle: 'Provider-backed knowledge',
422
+ primaryNav: true,
423
+ audience: 'operator',
424
+ ctaMode: 'oss-next',
425
+ aliases: [
426
+ 'Gmail knowledge ingestion',
427
+ 'Google Drive knowledge ingestion',
428
+ 'ProviderDeltaSyncState',
429
+ ],
430
+ },
414
431
  {
415
432
  href: '/docs/libraries',
416
433
  title: 'Libraries overview',
@@ -604,6 +621,23 @@ export const DOCS_PAGES: readonly DocsPageEntry[] = [
604
621
  audience: 'operator',
605
622
  ctaMode: 'oss-next',
606
623
  },
624
+ {
625
+ href: '/docs/knowledge/governance',
626
+ title: 'Knowledge mutation governance',
627
+ description:
628
+ 'Gate provider-backed knowledge mutations with dry-runs, approvals, idempotency, audit evidence, and outbound-send policy.',
629
+ section: 'operate',
630
+ order: 72,
631
+ navTitle: 'Knowledge governance',
632
+ primaryNav: true,
633
+ audience: 'operator',
634
+ ctaMode: 'oss-next',
635
+ aliases: [
636
+ 'knowledge.mutation.evaluateGovernance',
637
+ 'KnowledgeMutationGovernance',
638
+ 'outbound-send gates',
639
+ ],
640
+ },
607
641
  {
608
642
  href: '/docs/advanced/telemetry',
609
643
  title: 'Telemetry',
@@ -692,6 +726,34 @@ export const DOCS_PAGES: readonly DocsPageEntry[] = [
692
726
  audience: 'operator',
693
727
  ctaMode: 'oss-next',
694
728
  },
729
+ {
730
+ href: '/docs/integrations/gmail',
731
+ title: 'Gmail integration',
732
+ description:
733
+ 'Ingest email threads through delta-aware provider contracts and governed outbound-send mutations.',
734
+ section: 'integrations',
735
+ order: 55,
736
+ primaryNav: true,
737
+ audience: 'operator',
738
+ ctaMode: 'oss-next',
739
+ aliases: ['email knowledge ingestion', 'Gmail delta sync'],
740
+ },
741
+ {
742
+ href: '/docs/integrations/google-drive',
743
+ title: 'Google Drive integration',
744
+ description:
745
+ 'Ingest Drive files and watches through explicit cursor, webhook, replay, dedupe, and tombstone contracts.',
746
+ section: 'integrations',
747
+ order: 56,
748
+ primaryNav: true,
749
+ audience: 'operator',
750
+ ctaMode: 'oss-next',
751
+ aliases: [
752
+ 'Drive knowledge ingestion',
753
+ 'Google Drive watchChanges',
754
+ 'ProviderDeltaSyncState',
755
+ ],
756
+ },
695
757
  {
696
758
  href: '/docs/integrations/stripe',
697
759
  title: 'Stripe integration',
@@ -1392,6 +1392,22 @@
1392
1392
  "kind": "reference",
1393
1393
  "visibility": "public"
1394
1394
  },
1395
+ {
1396
+ "id": "docs.tech.contracts.knowledge-provider-backed",
1397
+ "title": "Provider-backed knowledge",
1398
+ "summary": "Provider-backed knowledge syncs Gmail and Google Drive through explicit provider delta and mutation governance evidence.",
1399
+ "route": "/docs/tech/contracts/knowledge-provider-backed",
1400
+ "source": "docblock",
1401
+ "contentPath": "docblocks/docs/tech/contracts/knowledge-provider-backed.md",
1402
+ "tags": [
1403
+ "tech",
1404
+ "contracts",
1405
+ "knowledge",
1406
+ "integrations"
1407
+ ],
1408
+ "kind": "reference",
1409
+ "visibility": "public"
1410
+ },
1395
1411
  {
1396
1412
  "id": "docs.tech.contracts.migrations",
1397
1413
  "title": "MigrationSpec Overview",
@@ -1482,6 +1498,22 @@
1482
1498
  "kind": "reference",
1483
1499
  "visibility": "public"
1484
1500
  },
1501
+ {
1502
+ "id": "docs.tech.contracts.pwa-updates",
1503
+ "title": "PWA update management",
1504
+ "summary": "Configure frontend update checks with app defaults and release overrides.",
1505
+ "route": "/docs/tech/contracts/pwa-updates",
1506
+ "source": "docblock",
1507
+ "contentPath": "docblocks/docs/tech/contracts/pwa-updates.md",
1508
+ "tags": [
1509
+ "tech",
1510
+ "contracts",
1511
+ "pwa",
1512
+ "updates"
1513
+ ],
1514
+ "kind": "reference",
1515
+ "visibility": "public"
1516
+ },
1485
1517
  {
1486
1518
  "id": "docs.tech.contracts.README",
1487
1519
  "title": "Contracts: Specs, Registry, Handlers, Adapters",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "generatedAt": "1970-01-01T00:00:00.000Z",
3
- "total": 1143,
3
+ "total": 1145,
4
4
  "version": null,
5
5
  "contentRoot": "../../../../../../../generated/docs",
6
6
  "chunks": [
7
7
  {
8
8
  "key": "_common",
9
9
  "file": "docs-index._common.json",
10
- "total": 181
10
+ "total": 183
11
11
  },
12
12
  {
13
13
  "key": "agent-console",
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "id": "notifications/notifications.delete",
12
12
  "title": "notifications.delete",
13
- "summary": "Delete a notification.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, delete\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
13
+ "summary": "Delete a notification.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, delete\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
14
14
  "route": "/docs/reference/notifications/notifications.delete",
15
15
  "source": "generated",
16
16
  "contentPath": "notifications/notifications.delete.md"
@@ -18,7 +18,7 @@
18
18
  {
19
19
  "id": "notifications/notifications.list",
20
20
  "title": "notifications.list",
21
- "summary": "List notifications for the current user.\n- **Type**: operation (query)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, list\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
21
+ "summary": "List notifications for the current user.\n- **Type**: operation (query)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, list\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
22
22
  "route": "/docs/reference/notifications/notifications.list",
23
23
  "source": "generated",
24
24
  "contentPath": "notifications/notifications.list.md"
@@ -26,7 +26,7 @@
26
26
  {
27
27
  "id": "notifications/notifications.markAllRead",
28
28
  "title": "notifications.markAllRead",
29
- "summary": "Mark all notifications as read.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, read\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
29
+ "summary": "Mark all notifications as read.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, read\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
30
30
  "route": "/docs/reference/notifications/notifications.markAllRead",
31
31
  "source": "generated",
32
32
  "contentPath": "notifications/notifications.markAllRead.md"
@@ -34,7 +34,7 @@
34
34
  {
35
35
  "id": "notifications/notifications.markRead",
36
36
  "title": "notifications.markRead",
37
- "summary": "Mark a notification as read.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, read\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
37
+ "summary": "Mark a notification as read.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, read\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
38
38
  "route": "/docs/reference/notifications/notifications.markRead",
39
39
  "source": "generated",
40
40
  "contentPath": "notifications/notifications.markRead.md"
@@ -42,7 +42,7 @@
42
42
  {
43
43
  "id": "notifications/notifications.preferences.get",
44
44
  "title": "notifications.preferences.get",
45
- "summary": "Get notification preferences for current user.\n- **Type**: operation (query)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, preferences, get\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
45
+ "summary": "Get notification preferences for current user.\n- **Type**: operation (query)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, preferences, get\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
46
46
  "route": "/docs/reference/notifications/notifications.preferences.get",
47
47
  "source": "generated",
48
48
  "contentPath": "notifications/notifications.preferences.get.md"
@@ -50,7 +50,7 @@
50
50
  {
51
51
  "id": "notifications/notifications.preferences.update",
52
52
  "title": "notifications.preferences.update",
53
- "summary": "Update notification preferences.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, preferences, update\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
53
+ "summary": "Update notification preferences.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, preferences, update\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
54
54
  "route": "/docs/reference/notifications/notifications.preferences.update",
55
55
  "source": "generated",
56
56
  "contentPath": "notifications/notifications.preferences.update.md"
@@ -58,7 +58,7 @@
58
58
  {
59
59
  "id": "notifications/notifications.send",
60
60
  "title": "notifications.send",
61
- "summary": "Send a notification to a user.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, send\n- **File**: `packages/libs/contracts-spec/src/notifications/contracts.ts`",
61
+ "summary": "Send a notification to a user.\n- **Type**: operation (command)\n- **Version**: 1.0.0\n- **Stability**: stable\n- **Owners**: platform.notifications\n- **Tags**: notifications, send\n- **File**: `packages/modules/notifications/src/contracts/index.ts`",
62
62
  "route": "/docs/reference/notifications/notifications.send",
63
63
  "source": "generated",
64
64
  "contentPath": "notifications/notifications.send.md"
@@ -0,0 +1,191 @@
1
+ import { CodeBlock } from '@contractspec/lib.design-system';
2
+ import Link from '@contractspec/lib.ui-link';
3
+ import { ChevronRight } from 'lucide-react';
4
+
5
+ const evidenceChecklist = [
6
+ 'ProviderDeltaSyncState persisted for each source after sync or watch renewal.',
7
+ 'Tombstoned provider records are skipped before indexing or mutation.',
8
+ 'Outbound mutations carry dry-run, approval, idempotency, audit, and send-gate evidence.',
9
+ 'Connect adoption resolves existing knowledge and integration surfaces before new runtime code is added.',
10
+ ];
11
+
12
+ export function GuideProviderBackedKnowledgePage() {
13
+ return (
14
+ <div className="space-y-8">
15
+ <div className="space-y-3">
16
+ <h1 className="font-bold text-4xl">Adopt provider-backed knowledge</h1>
17
+ <p className="text-lg text-muted-foreground">
18
+ Turn Gmail and Google Drive into queryable knowledge without hiding
19
+ provider state, webhook expiry, or mutation risk in background jobs.
20
+ The contract layer models the source, the integration layer models
21
+ provider deltas, and the knowledge runtime owns ingestion/query
22
+ orchestration.
23
+ </p>
24
+ </div>
25
+
26
+ <div className="card-subtle space-y-4 p-6">
27
+ <h2 className="font-bold text-2xl">What you&apos;ll build</h2>
28
+ <ul className="space-y-2 text-muted-foreground text-sm">
29
+ <li>Gmail and Drive sources bound to explicit knowledge spaces.</li>
30
+ <li>
31
+ A checkpoint store for leases, cursors, webhook channel expiry, and
32
+ replay evidence.
33
+ </li>
34
+ <li>
35
+ A mutation gate that blocks unsafe external sends or provider
36
+ writes.
37
+ </li>
38
+ <li>
39
+ Connect adoption evidence proving you reused the existing
40
+ ContractSpec surfaces before adding custom provider code.
41
+ </li>
42
+ </ul>
43
+ </div>
44
+
45
+ <div className="space-y-6">
46
+ <section className="space-y-3">
47
+ <h2 className="font-bold text-2xl">
48
+ 1) Start from specs and sources
49
+ </h2>
50
+ <p className="text-muted-foreground text-sm">
51
+ Define the knowledge space and source binding before runtime sync.
52
+ Provider credentials stay in integration connections; source config
53
+ stores only identity, scope, and replayable sync state.
54
+ </p>
55
+ <CodeBlock
56
+ language="typescript"
57
+ filename="knowledge-source.ts"
58
+ code={`const source = {
59
+ meta: {
60
+ id: "src_drive_support",
61
+ tenantId: "tenant-acme",
62
+ integrationConnectionId: "conn_google_drive",
63
+ spaceKey: "knowledge.support-faq",
64
+ spaceVersion: "1.0.0",
65
+ label: "Support Drive",
66
+ sourceType: "google_drive",
67
+ createdAt: new Date(),
68
+ updatedAt: new Date(),
69
+ },
70
+ syncState: {
71
+ cursorId: "drive-start-page-token",
72
+ watermarkVersion: "drive-v1",
73
+ lease: {
74
+ holder: "knowledge-sync-worker",
75
+ expiresAt: new Date(Date.now() + 5 * 60_000),
76
+ renewalWindowMs: 60_000,
77
+ },
78
+ },
79
+ config: {
80
+ query: "mimeType = 'text/plain' and trashed = false",
81
+ },
82
+ };`}
83
+ />
84
+ </section>
85
+
86
+ <section className="space-y-3">
87
+ <h2 className="font-bold text-2xl">
88
+ 2) Sync with checkpoints, not blind polling
89
+ </h2>
90
+ <p className="text-muted-foreground text-sm">
91
+ `KnowledgeRuntime` can load a stored provider delta before listing
92
+ Gmail or Drive, then save the next checkpoint after indexing. The
93
+ store can be a database table, workflow state, or Connect-backed
94
+ replay artifact.
95
+ </p>
96
+ <CodeBlock
97
+ language="typescript"
98
+ filename="knowledge-runtime.ts"
99
+ code={`const knowledge = createKnowledgeRuntime({
100
+ collection: "knowledge-support",
101
+ namespace: "tenant-acme",
102
+ embeddings,
103
+ vectorStore,
104
+ gmail,
105
+ drive,
106
+ deltaCheckpointStore,
107
+ });
108
+
109
+ await knowledge.syncGmail(
110
+ { label: "support" },
111
+ { sourceId: "src_gmail_support", evidenceRef: "audit://sync/gmail" },
112
+ );
113
+
114
+ await knowledge.syncDriveFiles(
115
+ { query: "mimeType = 'text/plain' and trashed = false" },
116
+ { sourceId: "src_drive_support", evidenceRef: "audit://sync/drive" },
117
+ );
118
+
119
+ await knowledge.watchDriveChanges(
120
+ {
121
+ channelId: "drive-watch-support",
122
+ webhookUrl: "https://app.example.com/webhooks/google-drive",
123
+ },
124
+ { sourceId: "src_drive_support" },
125
+ );`}
126
+ />
127
+ </section>
128
+
129
+ <section className="space-y-3">
130
+ <h2 className="font-bold text-2xl">
131
+ 3) Gate mutations before provider writes
132
+ </h2>
133
+ <p className="text-muted-foreground text-sm">
134
+ External sends and provider mutations should produce a decision
135
+ envelope whether they execute, block, or run as dry-run. Persist
136
+ that envelope with the same audit trail as the provider checkpoint.
137
+ </p>
138
+ <CodeBlock
139
+ language="typescript"
140
+ filename="governed-mutation.ts"
141
+ code={`const result = await knowledge.runGovernedMutation(
142
+ {
143
+ operation: "gmail.message.send",
144
+ sourceId: "src_gmail_support",
145
+ requiresApproval: true,
146
+ outboundSend: true,
147
+ governance: {
148
+ idempotencyKey: "tenant:gmail-send:123",
149
+ auditEvidence: { evidenceRef: "audit://gmail-send/123" },
150
+ approvalRefs: [{ id: "approval-123" }],
151
+ outboundSendGate: {
152
+ status: "approved",
153
+ evidenceRef: "gate://gmail-send/123",
154
+ },
155
+ },
156
+ },
157
+ () => gmail.sendEmail(message),
158
+ { audit: (envelope) => auditTrail.write(envelope) },
159
+ );`}
160
+ />
161
+ </section>
162
+
163
+ <section className="card-subtle space-y-3 p-6">
164
+ <h2 className="font-bold text-2xl">4) Adoption evidence</h2>
165
+ <ul className="space-y-2 text-muted-foreground text-sm">
166
+ {evidenceChecklist.map((item) => (
167
+ <li key={item}>{item}</li>
168
+ ))}
169
+ </ul>
170
+ <CodeBlock
171
+ language="bash"
172
+ filename="connect-adoption"
173
+ code={`contractspec connect adoption sync --json
174
+
175
+ printf '{"goal":"Wire provider-backed knowledge for Gmail and Drive"}' | \\
176
+ contractspec connect adoption resolve --family knowledge --stdin --json`}
177
+ />
178
+ </section>
179
+ </div>
180
+
181
+ <div className="flex items-center gap-4 pt-4">
182
+ <Link href="/docs/knowledge/sources" className="btn-ghost">
183
+ Knowledge sources
184
+ </Link>
185
+ <Link href="/docs/integrations/google-drive" className="btn-primary">
186
+ Google Drive integration <ChevronRight size={16} />
187
+ </Link>
188
+ </div>
189
+ </div>
190
+ );
191
+ }
@@ -76,6 +76,13 @@ const guides = [
76
76
  href: '/docs/guides/connect-in-a-repo',
77
77
  time: '15 min',
78
78
  },
79
+ {
80
+ title: 'Adopt provider-backed knowledge',
81
+ description:
82
+ 'Sync Gmail and Google Drive into governed knowledge spaces with provider checkpoints, tombstones, and mutation gates.',
83
+ href: '/docs/guides/provider-backed-knowledge',
84
+ time: '30 min',
85
+ },
79
86
  {
80
87
  title: 'Author release capsules',
81
88
  description:
@@ -120,6 +120,26 @@ Use the generated manifest and chunks under \`docs-index.manifest.json\` and \`d
120
120
 
121
121
  Run ContractSpec CI checks to detect drift and breaking changes before merge.`,
122
122
  },
123
+ {
124
+ id: 'docs.guides.provider-backed-knowledge',
125
+ title: 'Adopt provider-backed knowledge',
126
+ summary:
127
+ 'Ingest Gmail and Google Drive with persisted deltas, replay checkpoints, tombstones, and mutation governance.',
128
+ kind: 'usage',
129
+ visibility: 'public',
130
+ route: '/docs/guides/provider-backed-knowledge',
131
+ tags: ['guides', 'knowledge', 'integrations', 'governance'],
132
+ body: `# Adopt provider-backed knowledge
133
+
134
+ Use \`@contractspec/lib.knowledge\` with Gmail and Google Drive providers to sync external knowledge through explicit \`ProviderDeltaSyncState\` checkpoints.
135
+
136
+ ## Production baseline
137
+
138
+ - Persist provider cursor, watermark, webhook, replay, dedupe, idempotency, and tombstone state per source.
139
+ - Register \`knowledge.mutation.evaluateGovernance\` for mutation approval and audit evidence.
140
+ - Gate outbound sends and provider mutations through dry-run, approval, idempotency, and audit checks.
141
+ - Keep Connect review packets tied to the provider source and mutation evidence refs.`,
142
+ },
123
143
  ];
124
144
 
125
145
  registerDocBlocks(guideDocBlocks);
@@ -11,6 +11,7 @@ export { GuideGenerateDocsClientsSchemasPage } from './GuideGenerateDocsClientsS
11
11
  export { GuideHostBuilderWorkbenchPage } from './GuideHostBuilderWorkbenchPage';
12
12
  export { GuideImportExistingCodebasesPage } from './GuideImportExistingCodebasesPage';
13
13
  export { GuideNextjsOneEndpointPage } from './GuideNextjsOneEndpointPage';
14
+ export { GuideProviderBackedKnowledgePage } from './GuideProviderBackedKnowledgePage';
14
15
  export { GuideReleaseCapsulesPage } from './GuideReleaseCapsulesPage';
15
16
  export { GuideSpecValidationTypingPage } from './GuideSpecValidationTypingPage';
16
17
  export { GuidesIndexPage } from './GuidesIndexPage';
@@ -67,15 +67,36 @@ outputs:
67
67
  <li>Extract attachments and process them</li>
68
68
  <li>Build email-to-task workflows</li>
69
69
  <li>Monitor specific email threads</li>
70
+ <li>Sync threads into governed knowledge spaces with checkpointed deltas</li>
70
71
  </ul>
71
72
  </div>
72
73
 
74
+ <div className="space-y-4">
75
+ <h2 className="font-bold text-2xl">Knowledge sync and mutation gates</h2>
76
+ <p className="text-muted-foreground">
77
+ Gmail supports the shared <code>provider.delta.watch</code>{' '}
78
+ capability. Knowledge runtimes should persist provider cursor,
79
+ watermark, dedupe, idempotency, replay, and tombstone state before
80
+ acknowledging sync work. Outbound email sends should pass through
81
+ knowledge mutation governance so dry-runs, approvals, audit evidence,
82
+ and outbound-send gates are recorded.
83
+ </p>
84
+ <div className="flex flex-wrap gap-3">
85
+ <Link href="/docs/guides/provider-backed-knowledge" className="btn-ghost">
86
+ Provider-backed knowledge guide
87
+ </Link>
88
+ <Link href="/docs/knowledge/governance" className="btn-ghost">
89
+ Mutation governance
90
+ </Link>
91
+ </div>
92
+ </div>
93
+
73
94
  <div className="flex items-center gap-4 pt-4">
74
95
  <Link href="/docs/integrations/resend" className="btn-ghost">
75
96
  Previous: Resend
76
97
  </Link>
77
- <Link href="/docs/integrations/google-calendar" className="btn-primary">
78
- Next: Google Calendar <ChevronRight size={16} />
98
+ <Link href="/docs/integrations/google-drive" className="btn-primary">
99
+ Next: Google Drive <ChevronRight size={16} />
79
100
  </Link>
80
101
  </div>
81
102
  </div>
@@ -60,8 +60,8 @@ outputs:
60
60
  </div>
61
61
 
62
62
  <div className="flex items-center gap-4 pt-4">
63
- <Link href="/docs/integrations/gmail" className="btn-ghost">
64
- Previous: Gmail API
63
+ <Link href="/docs/integrations/google-drive" className="btn-ghost">
64
+ Previous: Google Drive
65
65
  </Link>
66
66
  <Link href="/docs/integrations/openai" className="btn-primary">
67
67
  Next: OpenAI <ChevronRight size={16} />