obsidian-agent-fleet 0.11.0 → 0.13.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 +35 -35
- package/package.json +1 -1
- package/plugin/main.js +256 -112
- package/plugin/manifest.json +1 -1
- package/plugin/styles.css +23 -24
package/README.md
CHANGED
|
@@ -30,9 +30,9 @@ Agent Fleet is an Obsidian plugin that lets you build, configure, and run AI age
|
|
|
30
30
|
|
|
31
31
|
🎛️ **Model picker** — Choose between aliases (`opus` / `sonnet` / `haiku` / `opusplan` — backend-agnostic), pinned IDs, or Bedrock/Vertex/Foundry formats. One place to configure: settings default, per-agent, or per-task override. Runs log both the requested alias and the concrete resolved model.
|
|
32
32
|
|
|
33
|
-
🔌 **MCP Integration** —
|
|
33
|
+
🔌 **MCP Integration** — Register an MCP server **once** and it's available to **any** agent on **either** adapter (Claude Code or Codex). Servers live in a fleet-owned registry (`_fleet/mcp/`) and are projected into each run; your native `~/.claude.json` and `~/.codex/config.toml` are never modified. One-click OAuth 2.1 (or a static bearer token), stored in your OS keychain and projected to both backends.
|
|
34
34
|
|
|
35
|
-
🧠 **Agent Memory** —
|
|
35
|
+
🧠 **Agent Memory** — A two-tier, self-curating memory (curated working set + append-only ground truth) that agents write via a `remember` tool or `[REMEMBER]` tags, on both Claude and Codex. An optional nightly **reflection** consolidates it and can propose new skills from recurring patterns (approval-gated).
|
|
36
36
|
|
|
37
37
|
📊 **Dashboard** — Overview with run charts, success rates, token/cost tracking, activity timeline, fleet status, streaming output from active agents, and focused run-detail panels that lead with the final result and hide the full reasoning transcript behind a toggle.
|
|
38
38
|
|
|
@@ -135,7 +135,7 @@ agents/my-agent/
|
|
|
135
135
|
| **Allow/Deny Lists** | Fine-grained tool control (e.g., allow `Bash(curl *)`, deny `Bash(rm -rf *)`). Enforced on both backends — Claude Code natively, Codex via execpolicy command rules (see [Backends](#backends)) |
|
|
136
136
|
| **Skills** | Shared skills from the skill library |
|
|
137
137
|
| **MCP Servers** | Which MCP servers the agent can access |
|
|
138
|
-
| **Memory** |
|
|
138
|
+
| **Memory** | Two-tier self-curating memory: `remember` tool / `[REMEMBER]` tags → working set + raw archive, with optional nightly reflection |
|
|
139
139
|
| **Heartbeat** | Autonomous periodic run with schedule and instruction |
|
|
140
140
|
|
|
141
141
|
**Permission Modes:**
|
|
@@ -160,7 +160,7 @@ Each agent runs on one of two CLI backends, selected by the **Adapter** field in
|
|
|
160
160
|
| Models | `opus` / `sonnet` / `haiku` / `opusplan` aliases, pinned IDs, Bedrock/Vertex/Foundry | Codex slugs (e.g. `gpt-5.5-codex`) + free-text |
|
|
161
161
|
| Permission rules | Native — `.claude/settings.local.json` | execpolicy command rules via per-agent `CODEX_HOME` overlay |
|
|
162
162
|
| File/network sandbox | Permission Mode | Permission Mode (`workspace-write` / `read-only`); `codex exec` forces approval policy `never` |
|
|
163
|
-
| MCP servers |
|
|
163
|
+
| MCP servers | Fleet registry (`_fleet/mcp/`), projected via `--mcp-config` | Fleet registry (`_fleet/mcp/`), projected via `-c mcp_servers.*` |
|
|
164
164
|
|
|
165
165
|
Everything else — chat, tasks, heartbeat, Slack/Telegram channels, memory, run logs, model picker — works identically on both. The picker switches its alias list based on the selected adapter; free-text remains the escape hatch for any model ID.
|
|
166
166
|
|
|
@@ -311,40 +311,32 @@ A kanban view for managing agent tasks with five columns:
|
|
|
311
311
|
|
|
312
312
|
### MCP Servers
|
|
313
313
|
|
|
314
|
-
|
|
314
|
+
Register an MCP server **once** and it works for **any** agent on **either** adapter (Claude Code or Codex). Servers are a fleet-owned registry — one markdown file per server under `_fleet/mcp/<name>.md` — and are *projected* into each run at spawn time (Claude via `--mcp-config`, Codex via `-c mcp_servers.*`). Your native `~/.claude.json` and `~/.codex/config.toml` are **read-only**; Agent Fleet never modifies them.
|
|
315
|
+
|
|
316
|
+
**One-time import.** On first load, your existing Claude and Codex MCP servers are imported into the registry (a server configured in both becomes one entry, marked `imported`), and any bearer tokens found are moved into your OS keychain. Idempotent.
|
|
315
317
|
|
|
316
318
|
**Add Server UI:**
|
|
317
319
|
- Click **"Add Server"** on the MCP page to open the form
|
|
318
320
|
- **stdio** — command, arguments, environment variables
|
|
319
|
-
- **HTTP / SSE** — URL,
|
|
320
|
-
-
|
|
321
|
-
- Servers appear immediately after adding, with tools auto-discovered
|
|
322
|
-
|
|
323
|
-
**Remove Server:**
|
|
324
|
-
- Open any server's detail slideover → click **"Remove Server"**
|
|
325
|
-
- Cleans up CLI registration and stored secrets in one step
|
|
321
|
+
- **HTTP / SSE** — URL, custom headers, and authentication: none, a static **bearer token** (stored in the keychain), or **OAuth** (authenticate after saving)
|
|
322
|
+
- Servers are written to `_fleet/mcp/`; secrets never touch the vault
|
|
326
323
|
|
|
327
|
-
**
|
|
328
|
-
-
|
|
329
|
-
- **HTTP/SSE servers
|
|
330
|
-
-
|
|
324
|
+
**Server Management:**
|
|
325
|
+
- Enable/disable toggle per server (writes the registry file's frontmatter)
|
|
326
|
+
- Per-server **"Probe tools"** action — stdio servers are spawned and probed via JSON-RPC; HTTP/SSE servers are probed with the stored token
|
|
327
|
+
- Detail slideover with transport, auth state, and the discovered tool list
|
|
328
|
+
- **Remove Server** trashes the registry file and clears any stored token
|
|
329
|
+
- Grant servers to specific agents in the agent editor — leave an agent's list empty to grant every enabled server
|
|
331
330
|
|
|
332
331
|
**OAuth 2.1 Authentication:**
|
|
333
332
|
|
|
334
|
-
One-click browser-based auth
|
|
335
|
-
1. Click "Authenticate" on any server card
|
|
336
|
-
2. Plugin discovers OAuth endpoints automatically
|
|
337
|
-
3.
|
|
338
|
-
4.
|
|
339
|
-
5.
|
|
340
|
-
6.
|
|
341
|
-
7. Background token refresh — expiring tokens are refreshed and re-injected automatically
|
|
342
|
-
|
|
343
|
-
**Server Management:**
|
|
344
|
-
- Enable/disable toggle per server (writes to Claude's settings)
|
|
345
|
-
- Server cards show status, tool count, type, description
|
|
346
|
-
- Detail slideover with full tool list, descriptions, input schemas, parameters
|
|
347
|
-
- Assign MCP servers to specific agents in the agent editor
|
|
333
|
+
One-click browser-based auth, projected to both backends:
|
|
334
|
+
1. Click "Authenticate" on any HTTP/SSE server card
|
|
335
|
+
2. Plugin discovers OAuth endpoints automatically and registers via Dynamic Client Registration (PKCE flow)
|
|
336
|
+
3. Opens browser for approval
|
|
337
|
+
4. Tokens stored securely in the OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service)
|
|
338
|
+
5. The token is projected into each run — to Claude as an `Authorization` header, to Codex via `bearer_token_env_var` (passed through the spawn environment, never written to argv or any config file)
|
|
339
|
+
6. Background token refresh — expiring tokens are refreshed automatically, and the next run picks up the fresh token
|
|
348
340
|
|
|
349
341
|
---
|
|
350
342
|
|
|
@@ -407,12 +399,20 @@ The main overview with:
|
|
|
407
399
|
|
|
408
400
|
### Agent Memory
|
|
409
401
|
|
|
410
|
-
|
|
402
|
+
A two-tier, self-curating memory that works on **task, heartbeat, and chat** runs and on **both Claude Code and Codex** backends. Per agent, under `_fleet/memory/<agent>/`:
|
|
403
|
+
|
|
404
|
+
- **`working.md`** — curated, **token-budgeted** memory (`memory_token_budget`, default 1500) injected into every run, organized into Preferences (pinned) / Procedures / Observations / Recent.
|
|
405
|
+
- **`raw/<date>.md`** — append-only ground-truth log of everything captured (never injected), so summaries can always be re-derived.
|
|
406
|
+
|
|
407
|
+
**How an agent records something** (two channels, same sink):
|
|
408
|
+
1. The **`remember` tool** — `remember(fact, pin?, section?)`, auto-enabled for memory agents (preferred, structured).
|
|
409
|
+
2. The **`[REMEMBER] … [/REMEMBER]`** text tag as a fallback (`[REMEMBER:pin]` for standing preferences).
|
|
410
|
+
|
|
411
|
+
Captures land in `working.md` immediately, so the next run/turn sees them. Memory is agent-scoped (shared across all conversations, including channels).
|
|
412
|
+
|
|
413
|
+
**Reflection ("dreaming")** — enable `reflection_enabled` and a nightly run (`reflection_schedule`, default `0 3 * * *`) consolidates memory from the raw log: dedups, resolves contradictions, summarizes from ground truth to fit the budget, and keeps pinned preferences. With `reflection_propose_skills`, recurring friction becomes an approval-gated **skill proposal** in the Inbox. A failed reflection never wipes memory. Trigger manually with **Reflect now** on the agent.
|
|
411
414
|
|
|
412
|
-
|
|
413
|
-
2. Extracted and appended to `_fleet/memory/<agent-name>.md`
|
|
414
|
-
3. Injected into the agent's prompt on every future run
|
|
415
|
-
4. Memory is agent-scoped — shared across all conversations including Slack channels
|
|
415
|
+
> Legacy single-file memory (`_fleet/memory/<agent>.md`) is migrated automatically. `memory_max_entries` is superseded by `memory_token_budget`.
|
|
416
416
|
|
|
417
417
|
---
|
|
418
418
|
|
package/package.json
CHANGED