syntheo et de son serveur MCP aux pages de documentation qu’il faut mettre à jour quand il change. Pour la vue d’ensemble du monorepo, voir Architecture.
Contrats vérifiés par les tests
Deux tests deapps/cli lisent directement la documentation publique. Un changement de commande ou d’outil MCP casse la CI tant que ces pages ne suivent pas :
docs/AGENTS.md désigne apps/cli/src/cli.rs comme contrat des commandes et apps/cli/src/mcp/ comme contrat des outils et ressources MCP.apps/cli : le binaire syntheo
- Chemin :
apps/cli(paquet Cargosyntheo-cli, binairesyntheo,src/main.rs). - Rôle : accès en ligne de commande à la base locale
app.dbet serveur MCP en stdio. - Dépendances internes :
crates/agent-access,crates/db-app,crates/db-core. En développement seulement :crates/cli-docs. - Pages de doc concernées : /reference/cli, /reference/mcp, /reference/errors, /agents/cli, /agents/mcp, /agents/overview, /installation, /import-recordings.
Modules
Commandes
Options globales :
--base (SYNTHEO_BASE), --db-path (SYNTHEO_DB_PATH), --json. meetings accepte --source (SYNTHEO_SOURCE, local par défaut ; auto est un alias de local).
Accès à la base
db.rs cherche la base dans cet ordre : --db-path, puis --base/app.db, puis le dossier de données du système. Sous ce dossier, la CLI essaie syntheo/app.db, puis fr.willisback.syntheo/app.db. Un binaire nommé syntheo-dev lit fr.willisback.syntheo.dev/app.db. Une base absente donne l’erreur database_not_found : la CLI ne crée ni ne migre jamais la base.
Codes d’erreur
Un import lancé avec
--wait qui dépasse --timeout renvoie aussi le code 2, en gardant le travail en file pour import-status.
Serveur MCP
mcp.rs déclare un serveur syntheo (outils et ressources activés) avec des instructions qui orientent l’agent vers list_meetings en premier et interdisent l’accès direct à SQLite.
Ressources :
syntheo://meetings/{meeting_id} (Markdown), syntheo://meetings/{meeting_id}/transcript{?offset,limit} (texte, limite bornée) et syntheo://series/{series_id} (liste Markdown de la série).
Crates au service de la CLI
crates/agent-access
- Chemin :
crates/agent-access(paquetagent-access, alias workspacesyntheo-agent-access). - Rôle : opérations partagées sur les réunions, appelées par la CLI, le serveur MCP et l’application.
- API principale :
- lecture :
list_meetings,list_folders,get_meeting,get_meeting_transcript,get_recurring_meeting_history,get_meeting_export,get_local_meeting_export,paginate_transcripts; - propositions (
proposals.rs) :create_proposal,list_proposals,get_proposal,decline_proposal,proposal_unified_diff; - import (
recording_import.rs) :import_recording,get_recording_import. L’import ne passe en file que si l’application signale un worker actif : elle renouvelle un battement dans la tablelocal_recording_import_worker(voirapps/desktop/src/stt/recording-import.tsx) ; - rendu :
to_markdown,to_export_markdown,ExportLocale,format_export_date,localize_speaker_label(export_markdown.rs,transcript_render.rs) ; - limites :
DEFAULT_LIST_LIMIT20,MAX_LIST_LIMIT200,DEFAULT_TRANSCRIPT_LIMIT200,MAX_TRANSCRIPT_LIMIT500,DEFAULT_FOLDER_LIST_LIMIT100.
- lecture :
- Dépendances internes :
crates/db-app,crates/tiptap,crates/transcript. - Utilisé par :
apps/cli,plugins/db(export de réunion),plugins/local-api,crates/session-ingest. - Pages de doc concernées : /reference/cli, /reference/mcp, /agents/cli, /agents/mcp, /import-recordings, /notes (export Markdown).
crates/cli-docs
- Chemin :
crates/cli-docs(publish = false). - Rôle : génère une description de l’arbre clap, en Markdown (
generate) ou en JSON (generate_json, typesCommandDoc,OptionDoc,ArgumentDoc). - Dépendances internes : aucune.
- Utilisé par : seulement les tests de
apps/cli(dev-dependencies), pour le snapshot du contrat. - Pages de doc concernées : aucune directement ; protège /reference/cli contre une dérive non vue.
crates/agent-core
- Chemin :
crates/agent-core(aliassyntheo-agent-core). - Rôle : diagnostic et installation d’une intégration par hook pour trois CLI d’agents tierces : Codex, Claude Code et OpenCode (
ProviderKind). - API principale :
health_check,install_cli,uninstall_cli,upgrade_hooks; typesProviderHealth,ProviderHealthStatus,ProviderAuthStatus. - Dépendances internes :
crates/claude,crates/codex,crates/opencode. - Utilisé par :
plugins/agent, enregistré parapps/desktop/src-taurihors build App Store. - État : hérité d’Anarlog. Les hooks installés appellent la commande
char(par exemplechar claude notify), passyntheo, et aucun code deapps/desktop/srcn’importe@syntheo/plugin-agent. Rien ne sert la CLIsyntheoici. - Pages de doc concernées : aucune. L’installation des compétences d’agents documentée dans /agents/skills passe par
apps/desktop/src-tauri/src/agent_skills.rs, pas par cette crate.
crates/cli-process
- Chemin :
crates/cli-process(aliassyntheo-cli-process). - Rôle : lancement de processus enfants avec tokio :
spawn_with_retry,run_to_string,spawn_streaming_lines(flux de lignes typées), lecture bornée de stdout et stderr (MAX_PROCESS_STDOUT_BYTES64 Mo,MAX_PROCESS_STDERR_BYTES1 Mo). - Dépendances internes : aucune.
- Utilisé par :
crates/claude,crates/codex,crates/opencode. Niapps/clini le serveur MCP ne l’utilisent. - Pages de doc concernées : aucune.
Côté application
L’application installe et documente la CLI, mais ce code vit dansapps/desktop :
apps/desktop/src-tauri/src/embedded_cli.rs: installe le binairesyntheofourni avec l’application (voir Carte du code : application desktop).apps/desktop/src-tauri/src/agents-content.md: fichierAGENTS.mdécrit dans le dossier de données au démarrage, qui renvoie vers les outils MCP et la CLI.plugins/local-apietplugins/mcp: commandes et types côté application, voir /code/plugins.