agent-slack 0.2.13 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -15
- package/dist/index.js +1217 -476
- package/dist/index.js.map +26 -20
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -7,17 +7,9 @@ Guiding principle:
|
|
|
7
7
|
- **token-efficient output by default** (compact JSON, minimal duplication, and empty/null fields pruned) so LLMs can consume results cheaply.
|
|
8
8
|
- **zero-config auth** -- Auth just works if you have Slack Desktop (with fallbacks available). No Python dependency.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
- **Read**: fetch a message, detect threads, list full threads
|
|
13
|
-
- **Search**: messages + files (with filters)
|
|
14
|
-
- **Artifacts**: auto-download snippets/images/files to local paths for agents
|
|
15
|
-
- **Write**: reply in thread, add reactions
|
|
16
|
-
- **Canvas**: fetch Slack canvases as Markdown
|
|
17
|
-
|
|
18
|
-
## Installation
|
|
10
|
+
## Getting started
|
|
19
11
|
|
|
20
|
-
|
|
12
|
+
Install via Bun (recommended):
|
|
21
13
|
|
|
22
14
|
```bash
|
|
23
15
|
curl -fsSL https://raw.githubusercontent.com/stablyai/agent-slack/master/install.sh | sh
|
|
@@ -29,6 +21,14 @@ OR npm global install (requires Node >= 22.5):
|
|
|
29
21
|
npm i -g agent-slack
|
|
30
22
|
```
|
|
31
23
|
|
|
24
|
+
## At a glance
|
|
25
|
+
|
|
26
|
+
- **Read**: fetch a message, browse channel history, list full threads
|
|
27
|
+
- **Search**: messages + files (with filters)
|
|
28
|
+
- **Artifacts**: auto-download snippets/images/files to local paths for agents
|
|
29
|
+
- **Write**: reply, edit/delete messages, add reactions
|
|
30
|
+
- **Canvas**: fetch Slack canvases as Markdown
|
|
31
|
+
|
|
32
32
|
## Agent skill
|
|
33
33
|
|
|
34
34
|
This repo ships an agent skill at `skills/agent-slack/` compatible with Claude Code, Codex, Cursor, etc
|
|
@@ -58,8 +58,10 @@ agent-slack
|
|
|
58
58
|
│ └── parse-curl
|
|
59
59
|
├── message
|
|
60
60
|
│ ├── get <target> # fetch 1 message (+ thread meta )
|
|
61
|
-
│ ├── list <target> # fetch
|
|
61
|
+
│ ├── list <target> # fetch thread or recent channel messages
|
|
62
62
|
│ ├── send <target> <text> # send / reply (does the right thing)
|
|
63
|
+
│ ├── edit <target> <text> # edit a message
|
|
64
|
+
│ ├── delete <target> # delete a message
|
|
63
65
|
│ └── react
|
|
64
66
|
│ ├── add <target> <emoji>
|
|
65
67
|
│ └── remove <target> <emoji>
|
|
@@ -127,10 +129,12 @@ agent-slack message get "#general" --ts "1770165109.628379"
|
|
|
127
129
|
agent-slack message list "#general" --thread-ts "1770165109.000001"
|
|
128
130
|
```
|
|
129
131
|
|
|
130
|
-
If you have multiple workspaces configured and you use a channel **name** (`#channel` / `channel`), you must pass `--workspace` (or set `SLACK_WORKSPACE_URL`)
|
|
132
|
+
If you have multiple workspaces configured and you use a channel **name** (`#channel` / `channel`), you must pass `--workspace` (or set `SLACK_WORKSPACE_URL`).
|
|
133
|
+
`--workspace` accepts a full URL or a unique substring selector:
|
|
131
134
|
|
|
132
135
|
```bash
|
|
133
136
|
agent-slack message get "#general" --workspace "https://stablygroup.slack.com" --ts "1770165109.628379"
|
|
137
|
+
agent-slack message get "#general" --workspace "stablygroup" --ts "1770165109.628379"
|
|
134
138
|
```
|
|
135
139
|
|
|
136
140
|
## Examples
|
|
@@ -146,6 +150,15 @@ agent-slack message get "https://workspace.slack.com/archives/C123/p170000000000
|
|
|
146
150
|
|
|
147
151
|
# Full thread for a message
|
|
148
152
|
agent-slack message list "https://workspace.slack.com/archives/C123/p1700000000000000"
|
|
153
|
+
|
|
154
|
+
# Recent channel messages (browse channel history)
|
|
155
|
+
agent-slack message list "#general" --limit 20
|
|
156
|
+
|
|
157
|
+
# Recent channel messages that are marked with :eyes:
|
|
158
|
+
agent-slack message list "#general" --with-reaction eyes --oldest "1770165109.000000" --limit 20
|
|
159
|
+
|
|
160
|
+
# Recent channel messages that do not have :dart:
|
|
161
|
+
agent-slack message list "#general" --without-reaction dart --oldest "1770165109.000000" --limit 20
|
|
149
162
|
```
|
|
150
163
|
|
|
151
164
|
Optional:
|
|
@@ -155,6 +168,23 @@ Optional:
|
|
|
155
168
|
agent-slack message get "https://workspace.slack.com/archives/C123/p1700000000000000" --include-reactions
|
|
156
169
|
```
|
|
157
170
|
|
|
171
|
+
### Reply, edit, delete, and react
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
agent-slack message send "https://workspace.slack.com/archives/C123/p1700000000000000" "I can take this."
|
|
175
|
+
agent-slack message edit "https://workspace.slack.com/archives/C123/p1700000000000000" "I can take this today."
|
|
176
|
+
agent-slack message delete "https://workspace.slack.com/archives/C123/p1700000000000000"
|
|
177
|
+
agent-slack message react add "https://workspace.slack.com/archives/C123/p1700000000000000" "eyes"
|
|
178
|
+
agent-slack message react remove "https://workspace.slack.com/archives/C123/p1700000000000000" "eyes"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Channel mode requires `--ts`:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
agent-slack message edit "#general" "Updated text" --workspace "myteam" --ts "1770165109.628379"
|
|
185
|
+
agent-slack message delete "#general" --workspace "myteam" --ts "1770165109.628379"
|
|
186
|
+
```
|
|
187
|
+
|
|
158
188
|
### Message get vs list
|
|
159
189
|
|
|
160
190
|
**`message get`** fetches a single message. If the message is in a thread, it also returns thread metadata (reply count, participants) but **not** the full thread contents:
|
|
@@ -162,11 +192,11 @@ agent-slack message get "https://workspace.slack.com/archives/C123/p170000000000
|
|
|
162
192
|
```json
|
|
163
193
|
{
|
|
164
194
|
"message": { "ts": "...", "text": "...", "user": "U123", ... },
|
|
165
|
-
"thread": { "
|
|
195
|
+
"thread": { "ts": "...", "length": 6 }
|
|
166
196
|
}
|
|
167
197
|
```
|
|
168
198
|
|
|
169
|
-
**`message list`** fetches all
|
|
199
|
+
**`message list`** fetches all replies in a thread, or recent channel messages when no thread is specified. Use this when you need the full conversation:
|
|
170
200
|
|
|
171
201
|
```json
|
|
172
202
|
{
|
|
@@ -181,6 +211,8 @@ When to use which:
|
|
|
181
211
|
|
|
182
212
|
- Use `get` to check a single message or see if there's a thread worth expanding
|
|
183
213
|
- Use `list` to read an entire thread conversation
|
|
214
|
+
- Use `list` on a channel (without `--thread-ts`) to browse recent channel messages
|
|
215
|
+
- Use `list` with `--with-reaction` / `--without-reaction` plus `--oldest` to filter channel history by reaction markers
|
|
184
216
|
|
|
185
217
|
### Files (snippets/images/attachments)
|
|
186
218
|
|
|
@@ -206,7 +238,7 @@ agent-slack search files "testing" --content-type snippet --limit 10
|
|
|
206
238
|
Tips:
|
|
207
239
|
|
|
208
240
|
- For reliable results, include `--channel ...` (channel-scoped search scans history/files and filters locally).
|
|
209
|
-
- Use `--workspace
|
|
241
|
+
- Use `--workspace <url-or-unique-substring>` when using `#channel` names across multiple workspaces.
|
|
210
242
|
|
|
211
243
|
<!-- AI search (assistant.search.*) is described in design.doc but not currently implemented. -->
|
|
212
244
|
|