internal/

directory
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2026 License: AGPL-3.0

Directories

Path Synopsis
Package actions (piece ⑥) decides what every reminder says and which buttons it carries, and runs the multi-step flows behind those buttons.
Package actions (piece ⑥) decides what every reminder says and which buttons it carries, and runs the multi-step flows behind those buttons.
Package agents (piece ⑰) makes Exhale agent-ready: an MCP server that exposes every use case as a tool, the household briefing as a resource, and ready-made prompts (ADR 0018).
Package agents (piece ⑰) makes Exhale agent-ready: an MCP server that exposes every use case as a tool, the household briefing as a resource, and ready-made prompts (ADR 0018).
Package app (piece ⑦) holds every business operation of Exhale.
Package app (piece ⑦) holds every business operation of Exhale.
Package assistant is the model Exhale itself uses (ADR 0018, part B): plain language in chat and in the web, and reading statements and screenshots into the import review list.
Package assistant is the model Exhale itself uses (ADR 0018, part B): plain language in chat and in the web, and reading statements and screenshots into the import review list.
Package auth resolves who is calling: API tokens for scripts and AI agents, one-time codes for linking chat accounts, and web accounts and sessions (ADR 0006).
Package auth resolves who is calling: API tokens for scripts and AI agents, one-time codes for linking chat accounts, and web accounts and sessions (ADR 0006).
Package awake keeps the computer Exhale runs on from going to sleep, so that reminders go out on time and chat buttons keep answering (ADR 0028).
Package awake keeps the computer Exhale runs on from going to sleep, so that reminders go out on time and chat buttons keep answering (ADR 0028).
Package backup copies the SQLite database safely: a consistent snapshot with VACUUM INTO (copying the file of a live database can corrupt the copy), a rolling set of automatic snapshots while the server runs, and a restore that never overwrites data (ADR 0009, ADR 0020).
Package backup copies the SQLite database safely: a consistent snapshot with VACUUM INTO (copying the file of a live database can corrupt the copy), a rolling set of automatic snapshots while the server runs, and a restore that never overwrites data (ADR 0009, ADR 0020).
Package bus (piece ⑫) fans out domain events in memory: the web receives them over SSE, chat adapters re-edit messages already sent, and the scheduler re-plans reminders.
Package bus (piece ⑫) fans out domain events in memory: the web receives them over SSE, chat adapters re-edit messages already sent, and the scheduler re-plans reminders.
channels
email
Package email sends reminders by email over SMTP (ADR 0007).
Package email sends reminders by email over SMTP (ADR 0007).
email/smtptest
Package smtptest is an in-process SMTP server for tests.
Package smtptest is an in-process SMTP server for tests.
fake
Package fake is a text channel for tests: it renders messages as plain text so conversation scripts can be compared with golden files.
Package fake is a text channel for tests: it renders messages as plain text so conversation scripts can be compared with golden files.
notifiers
Package notifiers runs the notify-only channels (email, ntfy, webhooks, Web Push): it owns their instance settings and hands the channels to the action layer.
Package notifiers runs the notify-only channels (email, ntfy, webhooks, Web Push): it owns their instance settings and hands the channels to the action layer.
notify
Package notify is what the notify-only channels (email, ntfy, webhooks) share: turning a channel-agnostic actions.Message into plain text and HTML, and the link back to the web.
Package notify is what the notify-only channels (email, ntfy, webhooks) share: turning a channel-agnostic actions.Message into plain text and HTML, and the link back to the web.
ntfy
Package ntfy sends reminders as push notifications through ntfy (https://ntfy.sh or a self-hosted server).
Package ntfy sends reminders as push notifications through ntfy (https://ntfy.sh or a self-hosted server).
slack
Package slack (piece ③) connects Exhale to a Slack workspace over Socket Mode: a WebSocket the app opens outward, so no public URL or open port is needed (ADR 0001, 0007).
Package slack (piece ③) connects Exhale to a Slack workspace over Socket Mode: a WebSocket the app opens outward, so no public URL or open port is needed (ADR 0001, 0007).
telegram
Package telegram (piece ②) connects Exhale to a Telegram bot over long polling: an outbound connection, so no public URL or open port is needed (ADR 0001, 0007).
Package telegram (piece ②) connects Exhale to a Telegram bot over long polling: an outbound connection, so no public URL or open port is needed (ADR 0001, 0007).
webhook
Package webhook sends each reminder as one HTTP POST with a JSON body to an address the member chooses.
Package webhook sends each reminder as one HTTP POST with a JSON body to an address the member chooses.
webpush
Package webpush sends reminders as Web Push notifications to the browsers and installed apps (PWA) where a member turned them on (ADR 0026).
Package webpush sends reminders as Web Push notifications to the browsers and installed apps (PWA) where a member turned them on (ADR 0026).
webpush/pushtest
Package pushtest is a fake Web Push service and a fake browser for tests.
Package pushtest is a fake Web Push service and a fake browser for tests.
Package desktop is Exhale installed as a desktop app (ADR 0029).
Package desktop is Exhale installed as a desktop app (ADR 0029).
Package domain (piece ⑧) holds the entities and business rules of Exhale.
Package domain (piece ⑧) holds the entities and business rules of Exhale.
Package engine is the billing time engine (piece ⑨): civil dates and billing-style recurrence.
Package engine is the billing time engine (piece ⑨): civil dates and billing-style recurrence.
Package fx (piece ⑤) downloads the European Central Bank's daily reference rates: free, no API key, about 30 currencies (ADR 0008).
Package fx (piece ⑤) downloads the European Central Bank's daily reference rates: free, no API key, about 30 currencies (ADR 0008).
Package httpapi (piece ①) serves the REST API (huma, OpenAPI 3.1), live events (SSE), the MCP endpoint, health checks and the embedded web UI.
Package httpapi (piece ①) serves the REST API (huma, OpenAPI 3.1), live events (SSE), the MCP endpoint, health checks and the embedded web UI.
Package i18n holds the languages Exhale speaks and the translations of what chat and the service say (ADR 0023).
Package i18n holds the languages Exhale speaks and the translations of what chat and the service say (ADR 0023).
Package importer turns files from other tools into Exhale import items: a Wallos database or export, a spreadsheet saved as CSV, or Exhale's own export.
Package importer turns files from other tools into Exhale import items: a Wallos database or export, a spreadsheet saved as CSV, or Exhale's own export.
Package merchant reduces the description a bank writes for a payment to the words that identify who was paid, so "NETFLIX.COM 866-579-7172 CA", "Netflix.com Amsterdam" and a subscription called "Netflix" compare equal.
Package merchant reduces the description a bank writes for a payment to the words that identify who was paid, so "NETFLIX.COM 866-579-7172 CA", "Netflix.com Amsterdam" and a subscription called "Netflix" compare equal.
Package money (piece ⑩) represents exact amounts of money in a currency.
Package money (piece ⑩) represents exact amounts of money in a currency.
Package netguard keeps HTTP requests to addresses chosen by users (webhook URLs, ntfy servers) away from the server's own machine and network.
Package netguard keeps HTTP requests to addresses chosen by users (webhook URLs, ntfy servers) away from the server's own machine and network.
Package oauth is Exhale's own OAuth 2.1 authorization server, the part of the MCP authorization spec that lets a cloud assistant (Claude.ai, ChatGPT, Grok) connect to a person's Exhale by its URL (ADR 0018 milestone 3, ADR 0024).
Package oauth is Exhale's own OAuth 2.1 authorization server, the part of the MCP authorization spec that lets a cloud assistant (Claude.ai, ChatGPT, Grok) connect to a person's Exhale by its URL (ADR 0018 milestone 3, ADR 0024).
Package platform (piece ⑮) holds process-level concerns: data directory, logging and supervision of long-running services.
Package platform (piece ⑮) holds process-level concerns: data directory, logging and supervision of long-running services.
Package scheduler (piece ⑪) is Exhale's clock.
Package scheduler (piece ⑪) is Exhale's clock.
Package store (pieces ⑬ and ⑭) owns the SQLite database: opening it with safe pragmas, running migrations after an automatic backup, and mapping rows to domain types.
Package store (pieces ⑬ and ⑭) owns the SQLite database: opening it with safe pragmas, running migrations after an automatic backup, and mapping rows to domain types.
db
Package testutil holds shared test helpers.
Package testutil holds shared test helpers.
Package toolschema turns a use case of the op catalog into the JSON Schema of a model tool.
Package toolschema turns a use case of the op catalog into the JSON Schema of a model tool.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL