Skip to main content
This page maps the TypeScript packages of the pnpm workspace (packages/*). For the monorepo overview and the main flow, see the architecture. All packages are private ("private": true) and published under the @syntheo/* scope. They are not distributed on npm: only apps/desktop and other workspace packages consume them.

Inventory

Internal dependency graph

The dependencies below come from the dependencies fields of the package.json files. For the Tauri plugins mentioned, see the plugins.

Data access layer

Four packages form the SQLite access stack on the TypeScript side. The app assembles them in apps/desktop/src/db/index.ts.

@syntheo/db-runtime

  • Path: packages/db-runtime
  • Role: defines the transport contracts, without implementation.
  • Main API: types DrizzleProxyClient, LiveQueryClient, TransactionClient, QueryEvent, ProxyQueryMethod (run, all, get, values), Unsubscribe.
  • Internal dependencies: none.
  • Affected doc pages: none.

@syntheo/db

  • Path: packages/db
  • Role: thin Drizzle adapter on top of a DrizzleProxyClient client (see packages/db/AGENTS.md).
  • Main API: createDb(client), the schema exported by ./schema and the re-exported Drizzle helpers (eq, and, or, desc, asc, sql, count, max, ne).
  • Tables declared in 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, as well as tables for local library connections, attachment state and import migration.
  • Internal dependencies: db-runtime.
  • Affected doc pages: /en/data-and-privacy (what is stored locally), /en/architecture (local storage).
The Drizzle schema doesn’t define product behavior. Don’t document a feature from a table, and never ask users or agents to read the SQLite database directly.

@syntheo/db-react

  • Path: packages/db-react
  • Role: connects reactive queries to React.
  • Main API: createUseLiveQuery(client) and createUseDrizzleLiveQuery(client).
  • Internal dependencies: db-runtime.
  • Affected doc pages: none.

@syntheo/db-tauri

  • Path: packages/db-tauri
  • Role: implements the transport through the commands and the subscription of the plugins/db Tauri plugin.
  • Main API: tauriLiveQueryClient (both LiveQueryClient and DrizzleProxyClient) and tauriTransactionClient.
  • Internal dependencies: db-runtime, @syntheo/plugin-db.
  • Affected doc pages: none.

@syntheo/editor

  • Path: packages/editor
  • Role: rich editor based on ProseMirror, used for note bodies, chat input and prompts.
  • Internal dependencies: store, ui, utils, @syntheo/plugin-opener2.
  • Affected doc pages: /en/notes, /en/chat, /en/meetings.
The package has no root export; each subpath is an entry point. The packages/editor/daily/cfm.md file is an inherited design note (“Char-Flavored-Markdown”); no code imports it.

@syntheo/store

  • Path: packages/store
  • Role: Zod schemas shared between the app and the editor, and conversion helpers for storage.
  • Main API: templateSectionSchema, chatMessageStatusSchema, taskStatusSchema, wordSchema, speakerHintSchema, aiProviderSchema (types stt and llm), jsonObject, type ToStorageType. Exports ., ./schema and ./shared.
  • Internal dependencies: none.
  • Consumers in apps/desktop: summary templates (src/templates/*), STT and LLM connections (src/stt/*, src/ai/hooks/useLLMConnection.ts), persisted chat messages (src/chat/store/persisted-messages.ts).
  • Affected doc pages: /en/ai-setup (provider fields), /en/customize-summaries (template sections), /en/chat.

@syntheo/provider-validation

  • Path: packages/provider-validation
  • Role: validates an inference server’s address and checks its credentials before saving it.
  • Main API: validateProviderBaseUrl, verifyProviderCredentials, isPrivateHost, usesDeferredProviderAuthentication, providerCredentialIdentity, class ProviderCredentialError, type ProviderCredential.
  • Internal dependencies: none (external dependency js-sha256).
  • Consumers in apps/desktop: src/settings/providers.ts and the connection cards under src/settings/ai/*.
  • Affected doc pages: /en/ai-setup, /en/offline, /en/security. Check these pages if the address rules (HTTPS, private hosts) or authentication rules change.

@syntheo/utils

  • Path: packages/utils
  • Role: utilities with no workspace dependency.
  • Exports:
    • .: cn (Tailwind class merging), re-export of date-fns and TZDate, safeParseDate, parseEventInstant, safeFormat.
    • ./folders: normalizeFolderPath, folderDisplayName, collectFolderPaths, folderPathMatchesFilter, childFolderPath, ancestorFolderPaths.
    • ./session: session editor tabs (computeCurrentNoteTab, createEditorTabs) and summary documents (hasSummaryContent, defaultSummaryDocumentId, resolveSummaryDocument, visibleSummaryDocuments).
    • ./summary-eligibility: getSummaryEligibility, thresholds MIN_WORDS_FOR_SUMMARY (5) and MIN_TRANSCRIPT_CHARACTERS_FOR_SUMMARY (160).
  • Affected doc pages: /en/meetings (summary trigger), /en/notes (folders).

Interface and design

@syntheo/design-system

  • Path: packages/design-system
  • Role: design tokens in TypeScript and CSS.
  • Main API: PALETTE_IDS (cha, fuji, enji), DEFAULT_PALETTE (cha), isPaletteId, DesignPalettes, DesignColors, DesignSpacing, DesignRadius, DesignTypography, DesignControl, stylesheet ./tokens.css. The assets/brand folder contains the brand assets.
  • Internal dependencies: none.
  • Consumers: ui, apps/desktop (including src/settings/appearance/palette.tsx).
  • Affected doc pages: none. No page describes the appearance palettes to date.

@syntheo/ui

  • Path: packages/ui
  • Role: shared component library (shadcn configuration in components.json).
  • Main API: ./components/ui/* (accordion, button, card, checkbox, command, dialog, dropdown menu, popover, select, toast, tooltip, etc.), ./components/* (avatar, icons, logo), ./hooks/* (use-mount-effect, use-squircle), ./lib/*, ./globals.css, ./tailwind.config, ./postcss.config.
  • Internal dependencies: design-system, utils.
  • Affected doc pages: none.

@syntheo/changelog

  • Path: packages/changelog
  • Role: contains the release notes (content/desktop/<version>.md, one per version) and renders them in the app.
  • Main API: ChangelogContent, changelogComponents, parseFrontmatter, processContent. Export ./process for processing only.
  • Internal dependencies: utils.
  • Consumers: apps/desktop/src/changelog/*. The app reads the latest version through a Vite virtual module (virtual:changelog) and downloads older versions.
  • Affected doc pages: none. The Mintlify site has no release notes page.

Resources for agents

Three locations carry the same agent skill. Only one is written by hand. The scripts/publish-syntheo-skill.mjs script generates docs/skill.md and the mirrors in agent-plugins/syntheo/ from skills/syntheo/. With --check, it fails if one of the copies has drifted. So always edit skills/syntheo/, then run the script again. The skill’s content depends on the contract of the CLI (apps/cli/src/cli.rs) and of the MCP server (apps/cli/src/mcp/). Affected doc pages: /en/agents/overview, /en/agents/skills, /en/agents/cli, /en/agents/mcp, /en/reference/cli, /en/reference/mcp, /en/reference/errors, /en/installation.