@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.
Files changed (86) hide show
  1. package/.turbo/turbo-build.log +129 -115
  2. package/CHANGELOG.md +38 -0
  3. package/dist/components/docs/DocsIndexPage.js +1 -1
  4. package/dist/components/docs/architecture/ArchitectureControlPlanePage.d.ts +1 -0
  5. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +204 -0
  6. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +17 -1
  7. package/dist/components/docs/architecture/index.d.ts +1 -0
  8. package/dist/components/docs/architecture/index.js +507 -289
  9. package/dist/components/docs/ecosystem/IntegrationsPage.js +6 -3
  10. package/dist/components/docs/ecosystem/PluginsPage.js +98 -98
  11. package/dist/components/docs/ecosystem/RegistryPage.js +39 -42
  12. package/dist/components/docs/ecosystem/TemplatesPage.js +26 -21
  13. package/dist/components/docs/ecosystem/ecosystem.docblocks.js +10 -10
  14. package/dist/components/docs/ecosystem/index.js +179 -174
  15. package/dist/components/docs/index.js +6795 -5376
  16. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +2 -2
  17. package/dist/components/docs/integrations/IntegrationsGithubPage.d.ts +1 -0
  18. package/dist/components/docs/integrations/IntegrationsGithubPage.js +155 -0
  19. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.d.ts +1 -0
  20. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +168 -0
  21. package/dist/components/docs/integrations/IntegrationsMistralPage.d.ts +1 -0
  22. package/dist/components/docs/integrations/IntegrationsMistralPage.js +203 -0
  23. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  24. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +136 -9
  25. package/dist/components/docs/integrations/IntegrationsSlackPage.d.ts +1 -0
  26. package/dist/components/docs/integrations/IntegrationsSlackPage.js +161 -0
  27. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +72 -0
  28. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +2 -2
  29. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.d.ts +1 -0
  30. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +157 -0
  31. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.d.ts +1 -0
  32. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +165 -0
  33. package/dist/components/docs/integrations/index.d.ts +6 -0
  34. package/dist/components/docs/integrations/index.js +1688 -492
  35. package/dist/index.js +8016 -6597
  36. package/dist/node/components/docs/DocsIndexPage.js +1 -1
  37. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +203 -0
  38. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +17 -1
  39. package/dist/node/components/docs/architecture/index.js +507 -289
  40. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +6 -3
  41. package/dist/node/components/docs/ecosystem/PluginsPage.js +98 -98
  42. package/dist/node/components/docs/ecosystem/RegistryPage.js +39 -42
  43. package/dist/node/components/docs/ecosystem/TemplatesPage.js +26 -21
  44. package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +10 -10
  45. package/dist/node/components/docs/ecosystem/index.js +179 -174
  46. package/dist/node/components/docs/index.js +6795 -5376
  47. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +2 -2
  48. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +154 -0
  49. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +167 -0
  50. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +202 -0
  51. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  52. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +136 -9
  53. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +160 -0
  54. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +72 -0
  55. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +2 -2
  56. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +156 -0
  57. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +164 -0
  58. package/dist/node/components/docs/integrations/index.js +1688 -492
  59. package/dist/node/index.js +8016 -6597
  60. package/package.json +104 -20
  61. package/src/components/docs/DocsIndexPage.tsx +2 -1
  62. package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +136 -0
  63. package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +13 -1
  64. package/src/components/docs/architecture/index.ts +1 -0
  65. package/src/components/docs/ecosystem/IntegrationsPage.tsx +4 -3
  66. package/src/components/docs/ecosystem/PluginsPage.tsx +68 -87
  67. package/src/components/docs/ecosystem/RegistryPage.tsx +35 -43
  68. package/src/components/docs/ecosystem/TemplatesPage.tsx +28 -21
  69. package/src/components/docs/ecosystem/ecosystem.docblocks.ts +12 -10
  70. package/src/components/docs/generated/docs-index._common.json +240 -0
  71. package/src/components/docs/generated/docs-index.health.json +98 -0
  72. package/src/components/docs/generated/docs-index.manifest.json +14 -4
  73. package/src/components/docs/generated/docs-index.platform-integrations.json +81 -1
  74. package/src/components/docs/generated/docs-index.video-api-showcase.json +26 -0
  75. package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +2 -2
  76. package/src/components/docs/integrations/IntegrationsGithubPage.tsx +90 -0
  77. package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +112 -0
  78. package/src/components/docs/integrations/IntegrationsMistralPage.tsx +133 -0
  79. package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +2 -2
  80. package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +108 -9
  81. package/src/components/docs/integrations/IntegrationsSlackPage.tsx +98 -0
  82. package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +59 -0
  83. package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +2 -2
  84. package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +90 -0
  85. package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +92 -0
  86. package/src/components/docs/integrations/index.ts +6 -0
@@ -1,13 +1,13 @@
1
1
  {
2
- "generatedAt": "2026-02-15T02:25:57.758Z",
3
- "total": 753,
2
+ "generatedAt": "2026-02-27T08:24:14.176Z",
3
+ "total": 808,
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": 59
10
+ "total": 89
11
11
  },
12
12
  {
13
13
  "key": "agent-console",
@@ -49,6 +49,11 @@
49
49
  "file": "docs-index.files.json",
50
50
  "total": 22
51
51
  },
52
+ {
53
+ "key": "health",
54
+ "file": "docs-index.health.json",
55
+ "total": 12
56
+ },
52
57
  {
53
58
  "key": "identity-rbac",
54
59
  "file": "docs-index.identity-rbac.json",
@@ -127,7 +132,7 @@
127
132
  {
128
133
  "key": "platform.integrations",
129
134
  "file": "docs-index.platform-integrations.json",
130
- "total": 29
135
+ "total": 39
131
136
  },
132
137
  {
133
138
  "key": "platform.knowledge",
@@ -169,6 +174,11 @@
169
174
  "file": "docs-index.versioned-knowledge-base.json",
170
175
  "total": 10
171
176
  },
177
+ {
178
+ "key": "video-api-showcase",
179
+ "file": "docs-index.video-api-showcase.json",
180
+ "total": 3
181
+ },
172
182
  {
173
183
  "key": "wealth-snapshot",
174
184
  "file": "docs-index.wealth-snapshot.json",
@@ -1,4 +1,20 @@
1
1
  [
2
+ {
3
+ "id": "platform.integrations/ai-image.fal",
4
+ "title": "ai-image.fal",
5
+ "summary": "Fal integration for AI image generation using Flux and Stable Diffusion models.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: image, generation, flux, stable-diffusion",
6
+ "route": "/docs/reference/platform.integrations/ai-image.fal",
7
+ "source": "generated",
8
+ "contentPath": "platform.integrations/ai-image.fal.md"
9
+ },
10
+ {
11
+ "id": "platform.integrations/ai-image.openai",
12
+ "title": "ai-image.openai",
13
+ "summary": "OpenAI integration for AI image generation using DALL-E and gpt-image models.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: image, generation, dall-e, gpt-image",
14
+ "route": "/docs/reference/platform.integrations/ai-image.openai",
15
+ "source": "generated",
16
+ "contentPath": "platform.integrations/ai-image.openai.md"
17
+ },
2
18
  {
3
19
  "id": "platform.integrations/ai-llm.mistral",
4
20
  "title": "ai-llm.mistral",
@@ -7,10 +23,42 @@
7
23
  "source": "generated",
8
24
  "contentPath": "platform.integrations/ai-llm.mistral.md"
9
25
  },
26
+ {
27
+ "id": "platform.integrations/ai-voice-conv.mistral",
28
+ "title": "ai-voice-conv.mistral",
29
+ "summary": "Mistral conversational voice integration using conversation sessions and speech models for bidirectional interactions.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: voice, conversational, mistral, agents, sessions",
30
+ "route": "/docs/reference/platform.integrations/ai-voice-conv.mistral",
31
+ "source": "generated",
32
+ "contentPath": "platform.integrations/ai-voice-conv.mistral.md"
33
+ },
34
+ {
35
+ "id": "platform.integrations/ai-voice-conv.openai",
36
+ "title": "ai-voice-conv.openai",
37
+ "summary": "OpenAI Realtime API integration for bidirectional conversational voice with GPT models.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: voice, conversational, realtime, openai",
38
+ "route": "/docs/reference/platform.integrations/ai-voice-conv.openai",
39
+ "source": "generated",
40
+ "contentPath": "platform.integrations/ai-voice-conv.openai.md"
41
+ },
42
+ {
43
+ "id": "platform.integrations/ai-voice-stt.deepgram",
44
+ "title": "ai-voice-stt.deepgram",
45
+ "summary": "Deepgram integration for real-time and batch speech-to-text transcription with speaker diarization.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: voice, stt, transcription, diarization",
46
+ "route": "/docs/reference/platform.integrations/ai-voice-stt.deepgram",
47
+ "source": "generated",
48
+ "contentPath": "platform.integrations/ai-voice-stt.deepgram.md"
49
+ },
50
+ {
51
+ "id": "platform.integrations/ai-voice-stt.mistral",
52
+ "title": "ai-voice-stt.mistral",
53
+ "summary": "Mistral audio transcription integration for batch and streaming speech-to-text use cases.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: voice, stt, transcription, mistral, voxtral",
54
+ "route": "/docs/reference/platform.integrations/ai-voice-stt.mistral",
55
+ "source": "generated",
56
+ "contentPath": "platform.integrations/ai-voice-stt.mistral.md"
57
+ },
10
58
  {
11
59
  "id": "platform.integrations/ai-voice.elevenlabs",
12
60
  "title": "ai-voice.elevenlabs",
13
- "summary": "ElevenLabs integration for neural voice synthesis and voice catalog access.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: voice, tts\n- **File**: `packages/libs/contracts-spec/src/integrations/providers/elevenlabs.ts`",
61
+ "summary": "ElevenLabs integration for neural voice synthesis and voice catalog access.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.ai\n- **Tags**: voice, tts, stt\n- **File**: `packages/libs/contracts-spec/src/integrations/providers/elevenlabs.ts`",
14
62
  "route": "/docs/reference/platform.integrations/ai-voice.elevenlabs",
15
63
  "source": "generated",
16
64
  "contentPath": "platform.integrations/ai-voice.elevenlabs.md"
@@ -151,6 +199,38 @@
151
199
  "source": "generated",
152
200
  "contentPath": "platform.integrations/meeting-recorder.tldv.md"
153
201
  },
202
+ {
203
+ "id": "platform.integrations/messaging.github",
204
+ "title": "messaging.github",
205
+ "summary": "GitHub integration for issue and pull request comment workflows backed by webhook events.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.messaging\n- **Tags**: messaging, github, pull-requests",
206
+ "route": "/docs/reference/platform.integrations/messaging.github",
207
+ "source": "generated",
208
+ "contentPath": "platform.integrations/messaging.github.md"
209
+ },
210
+ {
211
+ "id": "platform.integrations/messaging.slack",
212
+ "title": "messaging.slack",
213
+ "summary": "Slack integration for inbound events, threaded responses, and interactive messaging workflows.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.messaging\n- **Tags**: messaging, slack",
214
+ "route": "/docs/reference/platform.integrations/messaging.slack",
215
+ "source": "generated",
216
+ "contentPath": "platform.integrations/messaging.slack.md"
217
+ },
218
+ {
219
+ "id": "platform.integrations/messaging.whatsapp.meta",
220
+ "title": "messaging.whatsapp.meta",
221
+ "summary": "Meta WhatsApp Cloud API integration for inbound message processing and outbound replies.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.messaging\n- **Tags**: messaging, whatsapp, meta",
222
+ "route": "/docs/reference/platform.integrations/messaging.whatsapp.meta",
223
+ "source": "generated",
224
+ "contentPath": "platform.integrations/messaging.whatsapp.meta.md"
225
+ },
226
+ {
227
+ "id": "platform.integrations/messaging.whatsapp.twilio",
228
+ "title": "messaging.whatsapp.twilio",
229
+ "summary": "Twilio-powered WhatsApp integration for inbound webhooks and outbound conversational messaging.\n- **Type**: integration (integration)\n- **Version**: 1.0.0\n- **Owners**: platform.messaging\n- **Tags**: messaging, whatsapp, twilio",
230
+ "route": "/docs/reference/platform.integrations/messaging.whatsapp.twilio",
231
+ "source": "generated",
232
+ "contentPath": "platform.integrations/messaging.whatsapp.twilio.md"
233
+ },
154
234
  {
155
235
  "id": "platform.integrations/openbanking.powens",
156
236
  "title": "openbanking.powens",
@@ -0,0 +1,26 @@
1
+ [
2
+ {
3
+ "id": "video-api-showcase/createUser",
4
+ "title": "createUser",
5
+ "summary": "- **Type**: operation (command)\n- **Version**: 1.0.0\n- **File**: `packages/examples/video-api-showcase/src/sample-specs.ts`\n```typescript\nexport const createUser = defineCommand({\nmeta: {\nname: \"CreateUser\",",
6
+ "route": "/docs/reference/video-api-showcase/createUser",
7
+ "source": "generated",
8
+ "contentPath": "video-api-showcase/createUser.md"
9
+ },
10
+ {
11
+ "id": "video-api-showcase/listTransactions",
12
+ "title": "listTransactions",
13
+ "summary": "- **Type**: operation (query)\n- **Version**: 1.0.0\n- **File**: `packages/examples/video-api-showcase/src/sample-specs.ts`\n```typescript\nexport const listTransactions = defineQuery({\nmeta: {\nname: \"ListTransactions\",",
14
+ "route": "/docs/reference/video-api-showcase/listTransactions",
15
+ "source": "generated",
16
+ "contentPath": "video-api-showcase/listTransactions.md"
17
+ },
18
+ {
19
+ "id": "video-api-showcase/sendNotification",
20
+ "title": "sendNotification",
21
+ "summary": "- **Type**: operation (command)\n- **Version**: 1.0.0\n- **File**: `packages/examples/video-api-showcase/src/sample-specs.ts`\n```typescript\nexport const sendNotification = defineCommand({\nmeta: {\nname: \"SendNotification\",",
22
+ "route": "/docs/reference/video-api-showcase/sendNotification",
23
+ "source": "generated",
24
+ "contentPath": "video-api-showcase/sendNotification.md"
25
+ }
26
+ ]
@@ -64,8 +64,8 @@ outputs:
64
64
  </div>
65
65
 
66
66
  <div className="flex items-center gap-4 pt-4">
67
- <Link href="/docs/integrations/openai" className="btn-ghost">
68
- Previous: OpenAI
67
+ <Link href="/docs/integrations/mistral" className="btn-ghost">
68
+ Previous: Mistral
69
69
  </Link>
70
70
  <Link href="/docs/integrations/qdrant" className="btn-primary">
71
71
  Next: Qdrant <ChevronRight size={16} />
@@ -0,0 +1,90 @@
1
+ import Link from '@contractspec/lib.ui-link';
2
+ import { ChevronRight } from 'lucide-react';
3
+
4
+ export function IntegrationsGithubPage() {
5
+ return (
6
+ <div className="space-y-8">
7
+ <div className="space-y-4">
8
+ <h1 className="text-4xl font-bold">GitHub Messaging</h1>
9
+ <p className="text-muted-foreground">
10
+ Use GitHub issue and pull request comments as an AI-native messaging
11
+ channel with webhook verification, policy checks, and reliable
12
+ outbound dispatch.
13
+ </p>
14
+ </div>
15
+
16
+ <div className="space-y-4">
17
+ <h2 className="text-2xl font-bold">Required secrets and config</h2>
18
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
19
+ <pre>{`// secret payload
20
+ {
21
+ "token": "ghp_...",
22
+ "webhookSecret": "..."
23
+ }
24
+
25
+ // optional connection config
26
+ {
27
+ "defaultOwner": "lssm-tech",
28
+ "defaultRepo": "contractspec",
29
+ "apiBaseUrl": "https://api.github.com"
30
+ }`}</pre>
31
+ </div>
32
+ </div>
33
+
34
+ <div className="space-y-4">
35
+ <h2 className="text-2xl font-bold">Webhook ingress</h2>
36
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
37
+ <li>
38
+ Inbound GitHub events are accepted on{' '}
39
+ <code className="bg-background/50 rounded px-2 py-1">
40
+ /webhooks/github/events
41
+ </code>
42
+ .
43
+ </li>
44
+ <li>
45
+ Signatures are checked using{' '}
46
+ <code className="bg-background/50 rounded px-2 py-1">
47
+ x-hub-signature-256
48
+ </code>{' '}
49
+ and the configured webhook secret.
50
+ </li>
51
+ <li>
52
+ Current normalization focuses on issue comment workflows and durable
53
+ comment dispatch.
54
+ </li>
55
+ </ul>
56
+ </div>
57
+
58
+ <div className="space-y-4">
59
+ <h2 className="text-2xl font-bold">Workspace mapping</h2>
60
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
61
+ <pre>{`CHANNEL_WORKSPACE_MAP_GITHUB={"lssm-tech/contractspec":"workspace-acme"}
62
+
63
+ # Optional dev fallback (off by default)
64
+ CHANNEL_ALLOW_UNMAPPED_WORKSPACE=0`}</pre>
65
+ </div>
66
+ </div>
67
+
68
+ <div className="space-y-4">
69
+ <h2 className="text-2xl font-bold">Best practices</h2>
70
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
71
+ <li>Use a least-privileged token scoped for comment operations.</li>
72
+ <li>
73
+ Route repositories explicitly with workspace maps in multi-tenant
74
+ environments.
75
+ </li>
76
+ <li>Keep dispatch endpoints protected with token or bearer auth.</li>
77
+ </ul>
78
+ </div>
79
+
80
+ <div className="flex items-center gap-4 pt-4">
81
+ <Link href="/docs/integrations/slack" className="btn-ghost">
82
+ Previous: Slack Messaging
83
+ </Link>
84
+ <Link href="/docs/integrations/whatsapp-meta" className="btn-primary">
85
+ Next: WhatsApp Meta <ChevronRight size={16} />
86
+ </Link>
87
+ </div>
88
+ </div>
89
+ );
90
+ }
@@ -0,0 +1,112 @@
1
+ import Link from '@contractspec/lib.ui-link';
2
+
3
+ export function IntegrationsHealthRoutingPage() {
4
+ return (
5
+ <div className="space-y-8">
6
+ <div className="space-y-4">
7
+ <h1 className="text-4xl font-bold">Health Routing Strategy</h1>
8
+ <p className="text-muted-foreground">
9
+ Health integrations resolve providers through deterministic transport
10
+ strategy order with explicit capability gating and unofficial-route
11
+ controls.
12
+ </p>
13
+ </div>
14
+
15
+ <div className="space-y-4">
16
+ <h2 className="text-2xl font-bold">Connection config fields</h2>
17
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
18
+ <pre>{`{
19
+ "defaultTransport": "official-api",
20
+ "strategyOrder": [
21
+ "official-api",
22
+ "official-mcp",
23
+ "aggregator-api",
24
+ "aggregator-mcp",
25
+ "unofficial"
26
+ ],
27
+ "allowUnofficial": false,
28
+ "unofficialAllowList": ["health.peloton"],
29
+ "apiBaseUrl": "https://api.provider.example",
30
+ "mcpUrl": "https://mcp.provider.example",
31
+ "oauthTokenUrl": "https://api.provider.example/oauth/token"
32
+ }`}</pre>
33
+ </div>
34
+ </div>
35
+
36
+ <div className="space-y-4">
37
+ <h2 className="text-2xl font-bold">Secret payload fields</h2>
38
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
39
+ <pre>{`{
40
+ "apiKey": "...",
41
+ "accessToken": "...",
42
+ "refreshToken": "...",
43
+ "clientId": "...",
44
+ "clientSecret": "...",
45
+ "tokenExpiresAt": "2026-02-01T00:00:00.000Z",
46
+ "mcpAccessToken": "...",
47
+ "webhookSecret": "..."
48
+ }`}</pre>
49
+ </div>
50
+ </div>
51
+
52
+ <div className="space-y-4">
53
+ <h2 className="text-2xl font-bold">Routing behavior</h2>
54
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
55
+ <li>
56
+ Unsupported strategies are skipped per provider capability matrix.
57
+ </li>
58
+ <li>
59
+ Missing credentials fail closed and fall through only when a later
60
+ strategy is valid.
61
+ </li>
62
+ <li>
63
+ Unofficial routes are disabled unless
64
+ <code className="bg-background/50 ml-1 rounded px-2 py-1">
65
+ allowUnofficial
66
+ </code>
67
+ is true.
68
+ </li>
69
+ <li>
70
+ When
71
+ <code className="bg-background/50 ml-1 rounded px-2 py-1">
72
+ unofficialAllowList
73
+ </code>
74
+ is set, only listed provider keys can route unofficially.
75
+ </li>
76
+ <li>
77
+ OAuth refresh uses
78
+ <code className="bg-background/50 ml-1 rounded px-2 py-1">
79
+ oauthTokenUrl
80
+ </code>
81
+ with refresh/client credentials when APIs return 401.
82
+ </li>
83
+ </ul>
84
+ </div>
85
+
86
+ <div className="space-y-4">
87
+ <h2 className="text-2xl font-bold">Provider guidance</h2>
88
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
89
+ <li>
90
+ Use official APIs when available (Whoop, Oura, Strava, Fitbit).
91
+ </li>
92
+ <li>
93
+ Use aggregator routing for providers without stable official APIs
94
+ (Garmin, MyFitnessPal, Eight Sleep, Peloton).
95
+ </li>
96
+ <li>
97
+ Keep unofficial automation opt-in and auditable for production.
98
+ </li>
99
+ </ul>
100
+ </div>
101
+
102
+ <div className="flex items-center gap-4 pt-4">
103
+ <Link href="/docs/integrations/whatsapp-twilio" className="btn-ghost">
104
+ Previous: WhatsApp Twilio
105
+ </Link>
106
+ <Link href="/docs/integrations" className="btn-primary">
107
+ Back to Integrations
108
+ </Link>
109
+ </div>
110
+ </div>
111
+ );
112
+ }
@@ -0,0 +1,133 @@
1
+ import Link from '@contractspec/lib.ui-link';
2
+ import { ChevronRight } from 'lucide-react';
3
+
4
+ export function IntegrationsMistralPage() {
5
+ return (
6
+ <div className="space-y-8">
7
+ <div className="space-y-4">
8
+ <h1 className="text-4xl font-bold">Mistral</h1>
9
+ <p className="text-muted-foreground">
10
+ Integrate Mistral models for chat, reasoning, embeddings,
11
+ speech-to-text, and conversational voice workflows. ContractSpec ships
12
+ first-class Mistral support across contracts, provider runtime wiring,
13
+ and CLI provider selection.
14
+ </p>
15
+ </div>
16
+
17
+ <div className="space-y-4">
18
+ <h2 className="text-2xl font-bold">Setup</h2>
19
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
20
+ <pre>{`# .env
21
+ MISTRAL_API_KEY=...`}</pre>
22
+ </div>
23
+ </div>
24
+
25
+ <div className="space-y-4">
26
+ <h2 className="text-2xl font-bold">Chat and reasoning</h2>
27
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
28
+ <pre>{`capabilityId: mistral-chat
29
+ provider:
30
+ type: mistral
31
+ operation: chatCompletion
32
+
33
+ inputs:
34
+ messages:
35
+ type: array
36
+ model:
37
+ type: string
38
+ default: "mistral-large-latest"
39
+ temperature:
40
+ type: number
41
+ optional: true
42
+
43
+ outputs:
44
+ content:
45
+ type: string
46
+ usage:
47
+ type: object`}</pre>
48
+ </div>
49
+ </div>
50
+
51
+ <div className="space-y-4">
52
+ <h2 className="text-2xl font-bold">Embeddings</h2>
53
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
54
+ <pre>{`capabilityId: mistral-embeddings
55
+ provider:
56
+ type: mistral
57
+ operation: createEmbedding
58
+
59
+ inputs:
60
+ text:
61
+ type: string
62
+ model:
63
+ type: string
64
+ default: "mistral-embed"
65
+
66
+ outputs:
67
+ embedding:
68
+ type: array
69
+ items:
70
+ type: number`}</pre>
71
+ </div>
72
+ </div>
73
+
74
+ <div className="space-y-4">
75
+ <h2 className="text-2xl font-bold">Speech-to-Text (Voxtral)</h2>
76
+ <div className="bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm">
77
+ <pre>{`capabilityId: mistral-stt
78
+ provider:
79
+ type: mistral
80
+ operation: transcribe
81
+
82
+ inputs:
83
+ audio:
84
+ type: bytes
85
+ format:
86
+ type: string
87
+ language:
88
+ type: string
89
+ optional: true
90
+
91
+ outputs:
92
+ text:
93
+ type: string
94
+ segments:
95
+ type: array
96
+ language:
97
+ type: string`}</pre>
98
+ </div>
99
+ </div>
100
+
101
+ <div className="space-y-4">
102
+ <h2 className="text-2xl font-bold">Conversational voice sessions</h2>
103
+ <p className="text-muted-foreground">
104
+ Use the conversational provider for session-based realtime voice flows
105
+ (turn handling, events, and interruption-safe streaming).
106
+ </p>
107
+ </div>
108
+
109
+ <div className="space-y-4">
110
+ <h2 className="text-2xl font-bold">Best practices</h2>
111
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
112
+ <li>
113
+ Choose model families by workload: coding, reasoning, or speech
114
+ </li>
115
+ <li>
116
+ Persist session IDs for conversational continuity across turns
117
+ </li>
118
+ <li>Capture token and latency telemetry for provider-level tuning</li>
119
+ <li>Set explicit fallbacks for network and rate-limit failures</li>
120
+ </ul>
121
+ </div>
122
+
123
+ <div className="flex items-center gap-4 pt-4">
124
+ <Link href="/docs/integrations/openai" className="btn-ghost">
125
+ Previous: OpenAI
126
+ </Link>
127
+ <Link href="/docs/integrations/elevenlabs" className="btn-primary">
128
+ Next: ElevenLabs <ChevronRight size={16} />
129
+ </Link>
130
+ </div>
131
+ </div>
132
+ );
133
+ }
@@ -121,8 +121,8 @@ outputs:
121
121
  <Link href="/docs/integrations/google-calendar" className="btn-ghost">
122
122
  Previous: Google Calendar
123
123
  </Link>
124
- <Link href="/docs/integrations/elevenlabs" className="btn-primary">
125
- Next: ElevenLabs <ChevronRight size={16} />
124
+ <Link href="/docs/integrations/mistral" className="btn-primary">
125
+ Next: Mistral <ChevronRight size={16} />
126
126
  </Link>
127
127
  </div>
128
128
  </div>