Metadata-Version: 2.5
Name: code-puppy-core-plugins
Version: 0.0.41
Summary: Official plugin bundle for Code Puppy
Project-URL: Repository, https://github.com/mpfaffenberger/code_puppy_core_plugins
Project-URL: Homepage, https://github.com/mpfaffenberger/code_puppy_core_plugins
Author: Michael Pfaffenberger
License: MIT
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: <3.15,>=3.11
Requires-Dist: httpx<1,>=0.24.1
Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai]<3,>=2.31.0
Description-Content-Type: text/markdown

# Code Puppy Core Plugins

Official plugin bundle for [Code Puppy](https://github.com/mpfaffenberger/code_puppy).

This distribution contains Code Puppy's builtin feature plugins. The core runtime
discovers them through the `code_puppy.plugins` Python entry-point group, so the
runtime remains independent of plugin implementation modules.

## Installation

Normal users do not need to install this package directly: `code-puppy` depends
on it and installs a compatible version automatically.

For development:

```bash
git clone https://github.com/mpfaffenberger/code_puppy.git

git clone https://github.com/mpfaffenberger/code_puppy_core_plugins.git
cd code_puppy_core_plugins
uv sync
uv pip install -e ../code_puppy
uv pip install -e .
uv run pytest
```

## Architecture

Each plugin is a package under `code_puppy_core_plugins/` with one
`register_callbacks.py`. Package metadata advertises those modules as entry
points. Code Puppy loads the entry points as its builtin tier, followed by user
plugins and trusted project plugins.

The package deliberately does not depend on `code-puppy` in its own metadata.
`code-puppy` depends on this bundle; adding the reverse edge would create a
packaging dependency cycle. Plugin CI installs the core runtime separately.

## Completion notifications

The `completion_notification` plugin is disabled by default. Enable a native,
best-effort desktop notification after a successful top-level response with:

```text
/set completion_notifications=true
```

Notifications use a sanitized, shortened copy of the latest user prompt as the
title and a shortened response preview as the body, with Apple Terminal, iTerm2,
or Warp labeled through `TERM_PROGRAM` when available. Unknown terminals omit
the terminal label. Sub-agent completions are intentionally silent. Desktop
notification centers may retain visible prompt and response previews.

Optional sound configuration is platform-aware:

```text
/set completion_notification_sound=Frog
```

On macOS, a simple name selects a system sound (`Frog`, `Glass`, `Ping`, etc.).
Preview one with `afplay /System/Library/Sounds/Frog.aiff`. On any platform, an
absolute path to a local sound file is accepted when an available platform
player can play it. Linux uses `notify-send` for desktop notifications when it
is installed; Windows uses a best-effort PowerShell toast. No external Python
dependencies are required.

## Releases

Pushes to `main` run lint and tests, bump the patch version, build, publish to
PyPI as `code-puppy-core-plugins`, and push the version tag. Configure the
`PYPI_API_TOKEN` repository secret before the first release.

## License

MIT
