@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
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-02-
|
|
3
|
-
"total":
|
|
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":
|
|
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":
|
|
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/
|
|
68
|
-
Previous:
|
|
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/
|
|
125
|
-
Next:
|
|
124
|
+
<Link href="/docs/integrations/mistral" className="btn-primary">
|
|
125
|
+
Next: Mistral <ChevronRight size={16} />
|
|
126
126
|
</Link>
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|