Metadata-Version: 2.4
Name: vystak-channel-slack
Version: 0.3.0
Summary: Vystak Slack channel — Socket Mode runner routing Slack events to agents
Project-URL: Homepage, https://vystak.dev
Project-URL: Repository, https://github.com/vystak/vystak
Author-email: Anatoliy Kolodkin <11351966+akolodkin@users.noreply.github.com>
License-Expression: Apache-2.0
Keywords: agent,channel,slack,vystak
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software 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
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Requires-Dist: aiohttp>=3.9
Requires-Dist: aiosqlite>=0.19
Requires-Dist: psycopg[binary]>=3.0
Requires-Dist: slack-bolt>=1.21
Requires-Dist: vystak-channel-runtime>=0.1.0
Requires-Dist: vystak>=0.1.0
Description-Content-Type: text/markdown

# vystak-channel-slack

Slack channel plugin for Vystak. Runs Slack Bolt in Socket Mode inside a
channel container and forwards events to agents via A2A.

## Usage

```python
import vystak as ast
import vystak_channel_slack  # triggers plugin registration

slack = ast.Channel(
    name="slack-main",
    type=ast.ChannelType.SLACK,
    platform=platform,
    secrets=[
        ast.Secret(name="SLACK_BOT_TOKEN"),
        ast.Secret(name="SLACK_APP_TOKEN"),
    ],
    routes=[
        ast.RouteRule(
            match={"slack_channel": "C0123ABCDE"},
            agent="weather-agent",
        ),
    ],
)
```

Export `SLACK_BOT_TOKEN` (xoxb-...) and `SLACK_APP_TOKEN` (xapp-...) in the
environment where you run `vystak apply`. The values are injected as env
vars into the channel container.

Route matching rules:

- `match.slack_channel` — exact channel ID (Cxxxx)
- `match.dm` = `true` — match direct messages
- Empty match — catch-all fallback

## Runtime mode

`SHARED`. One container per channel declaration holds a single Slack
Socket Mode connection and routes events across all declared agents.
