Skip to main content
Cette page cartographie les paquets TypeScript du workspace pnpm (packages/*). Pour la vue d’ensemble du monorepo et le flux principal, consultez l’architecture. Tous les paquets sont privés ("private": true) et publiés sous la portée @syntheo/*. Ils ne sont pas distribués sur npm : seuls apps/desktop et d’autres paquets du workspace les consomment.

Inventaire

Graphe de dépendances internes

Les dépendances ci-dessous proviennent des champs dependencies des package.json. Pour les plugins Tauri cités, consultez les plugins.

Couche d’accès aux données

Quatre paquets forment la pile d’accès à la base SQLite côté TypeScript. L’application les assemble dans apps/desktop/src/db/index.ts.

@syntheo/db-runtime

  • Chemin : packages/db-runtime
  • Rôle : définit les contrats de transport, sans implémentation.
  • API principale : types DrizzleProxyClient, LiveQueryClient, TransactionClient, QueryEvent, ProxyQueryMethod (run, all, get, values), Unsubscribe.
  • Dépendances internes : aucune.
  • Pages de doc concernées : aucune.

@syntheo/db

  • Chemin : packages/db
  • Rôle : adaptateur Drizzle mince au-dessus d’un client DrizzleProxyClient (voir packages/db/AGENTS.md).
  • API principale : createDb(client), le schéma exporté par ./schema et les helpers Drizzle réexportés (eq, and, or, desc, asc, sql, count, max, ne).
  • Tables déclarées dans packages/db/src/schema.ts : sessions, session_documents, transcripts, session_participants, action_items, session_attachments, humans, organizations, workspaces, folders, folder_attachments, tags, session_tags, entity_mentions, chat_groups, chat_messages, daily_notes, templates, app_settings, synced_preferences, ainsi que des tables de connexion de bibliothèque locale, d’état des pièces jointes et de migration d’import.
  • Dépendances internes : db-runtime.
  • Pages de doc concernées : /data-and-privacy (ce qui est stocké localement), /architecture (stockage local).
Le schéma Drizzle ne définit pas le comportement produit. Ne documentez pas une fonctionnalité à partir d’une table, et ne demandez jamais aux utilisateurs ou aux agents de lire la base SQLite directement.

@syntheo/db-react

  • Chemin : packages/db-react
  • Rôle : relie les requêtes réactives à React.
  • API principale : createUseLiveQuery(client) et createUseDrizzleLiveQuery(client).
  • Dépendances internes : db-runtime.
  • Pages de doc concernées : aucune.

@syntheo/db-tauri

  • Chemin : packages/db-tauri
  • Rôle : implémente le transport via les commandes et la souscription du plugin Tauri plugins/db.
  • API principale : tauriLiveQueryClient (à la fois LiveQueryClient et DrizzleProxyClient) et tauriTransactionClient.
  • Dépendances internes : db-runtime, @syntheo/plugin-db.
  • Pages de doc concernées : aucune.

@syntheo/editor

  • Chemin : packages/editor
  • Rôle : éditeur riche basé sur ProseMirror, utilisé pour le corps des notes, la saisie du chat et les invites.
  • Dépendances internes : store, ui, utils, @syntheo/plugin-opener2.
  • Pages de doc concernées : /notes, /chat, /meetings.
Le paquet n’a pas d’export racine ; chaque sous-chemin est un point d’entrée. Le fichier packages/editor/daily/cfm.md est une note de conception héritée (« Char-Flavored-Markdown ») ; aucun code ne l’importe.

@syntheo/store

  • Chemin : packages/store
  • Rôle : schémas Zod partagés entre l’application et l’éditeur, et helpers de conversion vers le stockage.
  • API principale : templateSectionSchema, chatMessageStatusSchema, taskStatusSchema, wordSchema, speakerHintSchema, aiProviderSchema (types stt et llm), jsonObject, type ToStorageType. Exports ., ./schema et ./shared.
  • Dépendances internes : aucune.
  • Consommateurs dans apps/desktop : modèles de compte rendu (src/templates/*), connexions STT et LLM (src/stt/*, src/ai/hooks/useLLMConnection.ts), messages de chat persistés (src/chat/store/persisted-messages.ts).
  • Pages de doc concernées : /ai-setup (champs d’un fournisseur), /customize-summaries (sections de modèle), /chat.

@syntheo/provider-validation

  • Chemin : packages/provider-validation
  • Rôle : valide l’adresse d’un serveur d’inférence et vérifie ses identifiants avant de l’enregistrer.
  • API principale : validateProviderBaseUrl, verifyProviderCredentials, isPrivateHost, usesDeferredProviderAuthentication, providerCredentialIdentity, classe ProviderCredentialError, type ProviderCredential.
  • Dépendances internes : aucune (dépendance externe js-sha256).
  • Consommateurs dans apps/desktop : src/settings/providers.ts et les cartes de connexion sous src/settings/ai/*.
  • Pages de doc concernées : /ai-setup, /offline, /security. Vérifiez ces pages si les règles d’adresse (HTTPS, hôtes privés) ou d’authentification changent.

@syntheo/utils

  • Chemin : packages/utils
  • Rôle : utilitaires sans dépendance au workspace.
  • Exports :
    • . : cn (fusion de classes Tailwind), réexport de date-fns et TZDate, safeParseDate, parseEventInstant, safeFormat.
    • ./folders : normalizeFolderPath, folderDisplayName, collectFolderPaths, folderPathMatchesFilter, childFolderPath, ancestorFolderPaths.
    • ./session : onglets de l’éditeur de session (computeCurrentNoteTab, createEditorTabs) et documents de compte rendu (hasSummaryContent, defaultSummaryDocumentId, resolveSummaryDocument, visibleSummaryDocuments).
    • ./summary-eligibility : getSummaryEligibility, seuils MIN_WORDS_FOR_SUMMARY (5) et MIN_TRANSCRIPT_CHARACTERS_FOR_SUMMARY (160).
  • Pages de doc concernées : /meetings (déclenchement du compte rendu), /notes (dossiers).

Interface et design

@syntheo/design-system

  • Chemin : packages/design-system
  • Rôle : jetons de design en TypeScript et en CSS.
  • API principale : PALETTE_IDS (cha, fuji, enji), DEFAULT_PALETTE (cha), isPaletteId, DesignPalettes, DesignColors, DesignSpacing, DesignRadius, DesignTypography, DesignControl, feuille ./tokens.css. Le dossier assets/brand contient les ressources de marque.
  • Dépendances internes : aucune.
  • Consommateurs : ui, apps/desktop (dont src/settings/appearance/palette.tsx).
  • Pages de doc concernées : aucune. Aucune page ne décrit les palettes d’apparence à ce jour.

@syntheo/ui

  • Chemin : packages/ui
  • Rôle : bibliothèque de composants partagée (configuration shadcn dans components.json).
  • API principale : ./components/ui/* (accordéon, bouton, carte, case à cocher, commande, dialogue, menu déroulant, popover, sélecteur, toast, info-bulle, etc.), ./components/* (avatar, icônes, logo), ./hooks/* (use-mount-effect, use-squircle), ./lib/*, ./globals.css, ./tailwind.config, ./postcss.config.
  • Dépendances internes : design-system, utils.
  • Pages de doc concernées : aucune.

@syntheo/changelog

  • Chemin : packages/changelog
  • Rôle : contient les notes de version (content/desktop/<version>.md, une par version) et les rend dans l’application.
  • API principale : ChangelogContent, changelogComponents, parseFrontmatter, processContent. Export ./process pour le traitement seul.
  • Dépendances internes : utils.
  • Consommateurs : apps/desktop/src/changelog/*. L’application lit la dernière version via un module virtuel Vite (virtual:changelog) et télécharge les versions plus anciennes.
  • Pages de doc concernées : aucune. Le site Mintlify n’a pas de page de notes de version.

Ressources pour les agents

Trois emplacements portent la même compétence (skill) agent. Un seul est rédigé à la main. Le script scripts/publish-syntheo-skill.mjs génère docs/skill.md et les miroirs de agent-plugins/syntheo/ à partir de skills/syntheo/. Avec --check, il échoue si l’une des copies a dérivé. Modifiez donc toujours skills/syntheo/, puis relancez le script. Le contenu de la skill dépend du contrat de la CLI (apps/cli/src/cli.rs) et du serveur MCP (apps/cli/src/mcp/). Pages de doc concernées : /agents/overview, /agents/skills, /agents/cli, /agents/mcp, /reference/cli, /reference/mcp, /reference/errors, /installation.