Metadata-Version: 2.4
Name: sentinel-meet
Version: 0.1.0
Summary: SentinelOS plugin: read-only tools over the SentinelMeet macOS app's local meeting database (list meetings, transcripts, summaries, full-text search).
Project-URL: Homepage, https://github.com/apocys/meeting-speech
Project-URL: Releases, https://github.com/apocys/meeting-speech/releases
Author: Apocys
License-Expression: MIT
License-File: LICENSE
Keywords: meetings,plugin,sentinelmeet,sentinelos,transcripts
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: MacOS X
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == 'dev'
Description-Content-Type: text/markdown

# sentinel-meet

**SentinelOS plugin for [SentinelMeet](https://github.com/apocys/meeting-speech)** — gives your SentinelOS agent read-only access to your local meeting database: list meetings, pull transcripts and summaries, and search across everything you've ever recorded.

## Install

```bash
pip install sentinel-meet
```

SentinelOS discovers the plugin automatically via the `sentinel_agent.plugins` entry point group — no configuration required. After install, a new **🎙️ `sentinelmeet`** toolset appears in `sentinel tools`.

## Prerequisites

- macOS with the **SentinelMeet** app installed — download from the
  [releases page](https://github.com/apocys/meeting-speech/releases).
- Run the app at least once so it creates its database at
  `~/Library/Application Support/com.apocys.meeting-speech/meeting_minutes.sqlite`.
- Python ≥ 3.10. Zero runtime dependencies (stdlib only).

If the app/database is absent the tools stay registered but return an install
hint instead of failing silently.

## Tools

| Tool | What it does |
| --- | --- |
| `sentinelmeet_list_meetings` | Recent meetings (most recent first) with transcript segment counts. Optional `since` (ISO-8601) and `limit` (1–100, default 20). |
| `sentinelmeet_get_transcript` | Full transcript of one meeting (`meeting_id`). Prefers the aggregated transcript when available, otherwise ordered segments with speaker + timestamps. Large payloads are truncated. |
| `sentinelmeet_get_summary` | Meeting notes (markdown) plus per-segment summaries, action items and key points (`meeting_id`). |
| `sentinelmeet_search_transcripts` | Case-insensitive literal text search across all transcripts (`query`, optional `limit`). Returns ~200-char excerpts around each match. |

Example (agent-side):

```
> what did we decide in yesterday's roadmap meeting?
🎙️ sentinelmeet_list_meetings(since="2026-07-07")
🎙️ sentinelmeet_get_summary(meeting_id="…")
```

## Privacy & safety

- **Strictly read-only** — every connection is opened with SQLite `mode=ro`;
  the plugin can never modify your meeting data.
- **Local-only** — data never leaves your machine; the plugin talks to a
  local SQLite file and nothing else.
- **Parameterised SQL only** — no string interpolation, ever.
- Custom DB location: set `SENTINELMEET_DB_PATH=/path/to/meeting_minutes.sqlite`.

## Development

```bash
pip install -e ".[dev]"
pytest
```

## License

MIT — see [LICENSE](LICENSE).
