Skip to content

feat(plugins): System Pack — OS notifications + text-to-speech - #30

Merged
rrader26 merged 1 commit into
mainfrom
feat/system-pack
May 12, 2026
Merged

feat(plugins): System Pack — OS notifications + text-to-speech#30
rrader26 merged 1 commit into
mainfrom
feat/system-pack

Conversation

@rrader26

Copy link
Copy Markdown
Contributor

Summary

  • New `createSystemPlugin()` adds `agentmark_notify` (OS notification) and `agentmark_voice_speak` (TTS).
  • Cross-platform pure-Node — uses OS-shipped utilities on each platform.

Tools

Tool macOS Windows Linux
`agentmark_notify` `osascript` `Windows.UI.Notifications` (PowerShell) `notify-send`
`agentmark_voice_speak` `say` `System.Speech.Synthesis` (PowerShell) `espeak-ng` / `espeak`

Why

Closes the "agent can interrupt the human politely" gap. Today an MCP server can output text to the chat window, but if the user is in another app, they won't see it until they switch back. These two tools let the agent push a system-level signal:

  • notify for actionable interrupts: "I need confirmation before sending this email", "background job complete"
  • voice_speak for hands-free or accessibility flows: "your meeting starts in 2 minutes", spoken status during a long-running task

Both fire-and-forget in v0. STT (`voice_listen`) and interactive notification buttons land in a follow-up.

Test plan

  • `pnpm build` clean
  • `pnpm test` — 346 pass / 10 skip (4 new: registration + argument validation)
  • Manual on macOS: `agentmark_notify { title: "Test", sound: true }` pops in Notification Center; `agentmark_voice_speak { text: "hello" }` speaks
  • Manual on Win 11 ARM64: notify produces a toast; voice_speak audible via SAPI

🤖 Generated with Claude Code

@rrader26
rrader26 force-pushed the feat/system-pack branch 2 times, most recently from b8b51cb to 997bc1a Compare May 12, 2026 12:44
Two surfaces that turn a background agent into something that can
politely interrupt the human without flipping them to a chat window.
Both cross-platform via OS-shipped utilities; no Node deps.

Tools shipped (2):
  agentmark_notify         native OS notification (title + body)
  agentmark_voice_speak    text-to-speech via OS engine

Platform mapping:
  macOS:   osascript display notification  +  say
  Windows: PowerShell Windows.UI.Notifications  +  System.Speech.Synthesis
  Linux:   notify-send (libnotify-bin)  +  espeak-ng / espeak

Use cases:
  - "I'm waiting on your input" → notify
  - "Background job complete" → notify with sound
  - Mid-flow status updates without screen takeover → speak
  - Accessibility-oriented audio confirmation of completed tasks

Both are async-fire-and-forget; agents don't wait for user reaction.
A future PR adds voice_listen (STT) + interactive notification
buttons.

Tests (4 new, 346 total): plugin registration, tool surface, argument
validation. Live OS-toast / TTS is smoke-tested on Mac + Win VMs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rrader26
rrader26 force-pushed the feat/system-pack branch from 997bc1a to 5ca8278 Compare May 12, 2026 12:55
@rrader26
rrader26 merged commit 6d5f3b2 into main May 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants