obsidian-agent-fleet 0.4.5 → 0.7.1
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 +53 -8
- package/package.json +1 -1
- package/plugin/main.js +297 -16372
- package/plugin/manifest.json +1 -1
- package/plugin/styles.css +20 -0
package/README.md
CHANGED
|
@@ -16,13 +16,13 @@ Agent Fleet is an Obsidian plugin that lets you build, configure, and run AI age
|
|
|
16
16
|
|
|
17
17
|
💬 **Interactive Chat** — Dock a chat panel anywhere in Obsidian. Switch between agents. Attach documents and images. Send follow-up messages while the agent works.
|
|
18
18
|
|
|
19
|
-
📡 **Slack
|
|
19
|
+
📡 **Slack & Telegram** — Chat with your agents from Slack or Telegram. Multi-agent routing via `@agent-name` prefix or interactive buttons. Slack Assistants API with native "is thinking..." indicator. Telegram with inline keyboard agent picker and typing dots. Session persistence across restarts.
|
|
20
20
|
|
|
21
21
|
💓 **Heartbeat** — Autonomous periodic agent runs. Define what an agent does when no one is asking — monitoring, reports, health checks — with results posted to Slack.
|
|
22
22
|
|
|
23
23
|
📋 **Task Board** — Kanban view with scheduling, priority, real-time progress tracking, and abort. Tasks run on cron schedules or on-demand.
|
|
24
24
|
|
|
25
|
-
🔌 **MCP Integration** —
|
|
25
|
+
🔌 **MCP Integration** — Add, remove, authenticate, and inspect MCP servers from the dashboard. One-click OAuth 2.1 with automatic CLI token injection — agents can use authenticated servers immediately.
|
|
26
26
|
|
|
27
27
|
🧠 **Agent Memory** — Agents persist context across sessions using `[REMEMBER]` tags stored as markdown.
|
|
28
28
|
|
|
@@ -204,6 +204,29 @@ channel_context: |
|
|
|
204
204
|
|
|
205
205
|
---
|
|
206
206
|
|
|
207
|
+
### Telegram
|
|
208
|
+
|
|
209
|
+
Chat with your agents from Telegram — simpler setup than Slack, no @mention required in DMs.
|
|
210
|
+
|
|
211
|
+
**Setup:**
|
|
212
|
+
1. Create a bot via [@BotFather](https://t.me/botfather) — `/newbot`, pick a name and username, copy the token
|
|
213
|
+
2. Add the token in Settings → Agent Fleet → Channel Credentials (type: Telegram)
|
|
214
|
+
3. Create a channel via the dashboard or as `_fleet/channels/my-telegram.md`
|
|
215
|
+
4. Message the bot in Telegram
|
|
216
|
+
|
|
217
|
+
**Features:**
|
|
218
|
+
- **Zero dependencies** — long-poll via HTTPS, no WebSocket, no SDK
|
|
219
|
+
- **Typing indicator** — `typing...` dots while the agent works (auto-refreshed every 4.5s)
|
|
220
|
+
- **Inline keyboard agent picker** — `/agents` command shows interactive buttons to switch agents
|
|
221
|
+
- **Slash command autocomplete** — commands registered automatically via `setMyCommands`
|
|
222
|
+
- **Agent name prefix** — replies show `[agent-name]` when multiple agents are configured
|
|
223
|
+
- **Group chat support** — add the bot to groups (disable privacy mode via BotFather for full access)
|
|
224
|
+
- **Forum topics** — enable Threaded Mode in BotFather for topic-based conversations
|
|
225
|
+
- **Session persistence** — conversations survive Obsidian restarts via `claude --resume`
|
|
226
|
+
- **4096-char message splitting** — long replies automatically chunked at paragraph boundaries
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
207
230
|
### Interactive Chat
|
|
208
231
|
|
|
209
232
|
The chat panel is a first-class Obsidian view — dock it in the sidebar, center, or any split.
|
|
@@ -246,7 +269,18 @@ A kanban view for managing agent tasks with five columns:
|
|
|
246
269
|
|
|
247
270
|
### MCP Servers
|
|
248
271
|
|
|
249
|
-
|
|
272
|
+
Add, remove, authenticate, and manage MCP servers directly from the dashboard — no terminal needed.
|
|
273
|
+
|
|
274
|
+
**Add Server UI:**
|
|
275
|
+
- Click **"Add Server"** on the MCP page to open the form
|
|
276
|
+
- **stdio** — command, arguments, environment variables
|
|
277
|
+
- **HTTP / SSE** — URL, API key (stored securely), custom headers
|
|
278
|
+
- Scope selection (user or local) — defaults to "user" so servers are visible across projects
|
|
279
|
+
- Servers appear immediately after adding, with tools auto-discovered
|
|
280
|
+
|
|
281
|
+
**Remove Server:**
|
|
282
|
+
- Open any server's detail slideover → click **"Remove Server"**
|
|
283
|
+
- Cleans up CLI registration and stored secrets in one step
|
|
250
284
|
|
|
251
285
|
**Discovery:**
|
|
252
286
|
- **stdio servers** — spawned and probed directly via JSON-RPC (~1-2s)
|
|
@@ -255,12 +289,14 @@ Discover and manage all MCP (Model Context Protocol) servers configured in Claud
|
|
|
255
289
|
|
|
256
290
|
**OAuth 2.1 Authentication:**
|
|
257
291
|
|
|
258
|
-
One-click browser-based auth
|
|
292
|
+
One-click browser-based auth with unified CLI token injection:
|
|
259
293
|
1. Click "Authenticate" on any server card
|
|
260
294
|
2. Plugin discovers OAuth endpoints automatically
|
|
261
295
|
3. Registers via Dynamic Client Registration
|
|
262
296
|
4. Opens browser for approval (PKCE flow)
|
|
263
|
-
5. Tokens stored in
|
|
297
|
+
5. Tokens stored securely in OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service)
|
|
298
|
+
6. Token automatically injected into Claude CLI config — agents can use the server immediately without separate CLI authentication
|
|
299
|
+
7. Background token refresh — expiring tokens are refreshed and re-injected automatically
|
|
264
300
|
|
|
265
301
|
**Server Management:**
|
|
266
302
|
- Enable/disable toggle per server (writes to Claude's settings)
|
|
@@ -386,6 +422,12 @@ Click any run in the dashboard to see full details in a slideover panel.
|
|
|
386
422
|
| Catch Up Missed Tasks | `true` | Run overdue tasks on startup |
|
|
387
423
|
| Notification Level | `all` | `all`, `failures-only`, `none` |
|
|
388
424
|
|
|
425
|
+
### Security
|
|
426
|
+
|
|
427
|
+
All secrets — MCP OAuth tokens, API keys, and channel credentials (Slack/Telegram) — are stored in your OS keychain via Obsidian's SecretStorage API. On first load after updating to v0.6.0, existing plaintext credentials are automatically migrated from `data.json` to the keychain and the plaintext copies are cleared.
|
|
428
|
+
|
|
429
|
+
Requires Obsidian 1.11.4+ for keychain support. On older versions, credentials remain in `data.json` with a console warning.
|
|
430
|
+
|
|
389
431
|
### Channel Settings
|
|
390
432
|
|
|
391
433
|
| Setting | Default | Description |
|
|
@@ -437,11 +479,14 @@ Yes. Each agent has persistent chat sessions that survive Obsidian restarts via
|
|
|
437
479
|
**Q: Does the Slack bot work when Obsidian is closed?**
|
|
438
480
|
No. The bot runs inside Obsidian via Socket Mode — when Obsidian is closed, the bot goes offline. Slack buffers messages briefly during short disconnects.
|
|
439
481
|
|
|
440
|
-
**Q: Can I use multiple agents in Slack?**
|
|
441
|
-
Yes. Type `@agent-name: message` to switch agents
|
|
482
|
+
**Q: Can I use multiple agents in Slack or Telegram?**
|
|
483
|
+
Yes. Type `@agent-name: message` to switch agents, or use `/agents` to get interactive buttons. Each agent maintains its own session. Works in both Slack and Telegram.
|
|
484
|
+
|
|
485
|
+
**Q: Which is easier to set up — Slack or Telegram?**
|
|
486
|
+
Telegram. Create a bot via @BotFather (30 seconds), paste the token, create a channel. Slack requires creating an app with Socket Mode, scopes, events, and reinstalls after scope changes.
|
|
442
487
|
|
|
443
488
|
**Q: What is a heartbeat?**
|
|
444
|
-
An autonomous periodic run — what an agent does on a schedule without user input. Configured via `HEARTBEAT.md` in the agent's folder. Results can be posted to
|
|
489
|
+
An autonomous periodic run — what an agent does on a schedule without user input. Configured via `HEARTBEAT.md` in the agent's folder. Results can be posted to Slack or Telegram automatically.
|
|
445
490
|
|
|
446
491
|
---
|
|
447
492
|
|
package/package.json
CHANGED