Publication IA: - 4 templates (magazine, brief, essay, simple) avec CSS riche - Rewrite IA (article/exercises/tutorial/reference/mixed) - Modération avec timeout 12s + fallback safe - Quotas publish_enhance par tier (basic=2, pro=15, business=100) - Détection contenu stale (hash) - Migration DB publishedContent/publishedTemplate/publishedSourceHash Fixes: - cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast - _isShared ajouté au type Note (champ virtuel serveur) - callout colors PDF export: extraction fonction pure testable - admin/published: guard note.userId null - Cmd+S fonctionne en mode dialog (pas seulement fullPage) i18n: - 23 clés publish* traduites dans les 15 locales - Extension Web Clipper: 13 locales mise à jour Tests: - callout-colors.test.ts (6 tests) - note-visible-in-view.test.ts (5 tests) - entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs - 199/199 tests passent Tracker: user-stories.md sync avec sprint-status.yaml
33 lines
1.6 KiB
TypeScript
33 lines
1.6 KiB
TypeScript
import { auth } from '@/auth'
|
|
import { redirect } from 'next/navigation'
|
|
import { McpSettingsPanel } from '@/components/mcp/mcp-settings-panel'
|
|
import { listMcpKeys, getMcpServerStatus } from '@/app/actions/mcp-keys'
|
|
import { SettingsHelpBox } from '@/components/settings/settings-help-box'
|
|
|
|
export default async function McpSettingsPage() {
|
|
const session = await auth()
|
|
if (!session?.user) redirect('/api/auth/signin')
|
|
|
|
const [keys, serverStatus] = await Promise.all([
|
|
listMcpKeys(),
|
|
getMcpServerStatus(),
|
|
])
|
|
|
|
return (
|
|
<div className="space-y-8">
|
|
<SettingsHelpBox
|
|
title="Qu'est-ce que MCP (Model Context Protocol) ?"
|
|
defaultOpen={true}
|
|
steps={[
|
|
{ text: 'MCP est un protocole qui permet aux agents IA de Memento de se connecter à des outils externes (bases de données, APIs, fichiers, etc.).' },
|
|
{ text: 'Memento expose un serveur MCP avec 22 outils — vos agents peuvent lire/créer des notes, chercher dans votre base, gérer les carnets, etc.' },
|
|
{ text: 'Créez une clé API ici, puis configurez-la dans votre client MCP (Claude Desktop, Cursor, Continue.dev…) avec l\'URL du serveur.' },
|
|
{ text: 'Format de configuration : URL du serveur MCP + votre clé dans le header Authorization.', link: { label: 'Documentation MCP', href: 'https://modelcontextprotocol.io/docs' } },
|
|
{ icon: '⚡', text: 'Cas d\'usage : demandez à Claude Desktop d\'écrire une note dans Memento, de chercher dans vos carnets, ou de créer un agent.' },
|
|
]}
|
|
/>
|
|
<McpSettingsPanel initialKeys={keys} serverStatus={serverStatus} />
|
|
</div>
|
|
)
|
|
}
|