pi-vault-mind 0.7.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/LICENSE +21 -0
- package/README.md +428 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/src/commands.d.ts +9 -0
- package/dist/src/commands.js +813 -0
- package/dist/src/events.d.ts +13 -0
- package/dist/src/events.js +236 -0
- package/dist/src/graph.d.ts +3 -0
- package/dist/src/graph.js +234 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +61 -0
- package/dist/src/lance.d.ts +40 -0
- package/dist/src/lance.js +409 -0
- package/dist/src/server.d.ts +25 -0
- package/dist/src/server.js +180 -0
- package/dist/src/settings-ui.d.ts +9 -0
- package/dist/src/settings-ui.js +313 -0
- package/dist/src/state.d.ts +2 -0
- package/dist/src/state.js +16 -0
- package/dist/src/tools.d.ts +2 -0
- package/dist/src/tools.js +772 -0
- package/dist/src/types.d.ts +103 -0
- package/dist/src/types.js +51 -0
- package/dist/src/utils.d.ts +17 -0
- package/dist/src/utils.js +102 -0
- package/dist/src/vault-writer.d.ts +17 -0
- package/dist/src/vault-writer.js +141 -0
- package/dist/src/watcher.d.ts +91 -0
- package/dist/src/watcher.js +411 -0
- package/dist/src/widget.d.ts +3 -0
- package/dist/src/widget.js +12 -0
- package/dist/test/index.test.d.ts +1 -0
- package/dist/test/index.test.js +368 -0
- package/package.json +83 -0
- package/skills/vault-mind/SKILL.md +260 -0
- package/skills/vault-mind/references/tool-reference.md +53 -0
- package/skills/vault-mind-broadcaster/SKILL.md +112 -0
- package/skills/vault-mind-heavy-lifter/SKILL.md +34 -0
- package/skills/vault-mind-manager/SKILL.md +35 -0
- package/skills/vault-mind-miner/SKILL.md +40 -0
- package/skills/vault-mind-setup/SKILL.md +385 -0
- package/skills/vault-mind-setup/references/obsidian-cli-and-plugins.md +269 -0
- package/skills/vault-mind-setup/references/obsidian-vault-structure.md +106 -0
- package/skills/vault-mind-setup/references/pi-extension-wiring.md +236 -0
- package/skills/vault-mind-setup/references/troubleshooting-tree.md +147 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kyle Brodeur
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
# pi-vault-mind
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/pi-vault-mind)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://github.com/mariozechner/pi)
|
|
6
|
+
[](https://kylebrodeur.github.io/pi-vault-mind/)
|
|
7
|
+
[](https://github.com/kylebrodeur/pi-vault-mind/actions/workflows/docs.yml)
|
|
8
|
+
|
|
9
|
+
Passive Obsidian vault extension for the [pi](https://github.com/mariozechner/pi) agent ecosystem. Watches `@agent` markers in your vault, dispatches forked subagents, and stores results in LanceDB with vector + FTS + graph. Multi-agent "Drop & Forget" workflow.
|
|
10
|
+
|
|
11
|
+
> Looking for the legacy ledger-first extension (predecessor project)?
|
|
12
|
+
> See [kylebrodeur/pi-qmd-ledger](https://github.com/kylebrodeur/pi-qmd-ledger).
|
|
13
|
+
> This project was renamed twice: `pi-qmd-ledger` → `pi-llm-wiki` (intermediate) → `pi-vault-mind` (current).
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- **Passive File Watcher** — drop `@agent-Miner`, `@agent-Broadcaster`, etc. in any Obsidian note. Save the file. The watcher detects the marker, groups by role, and dispatches isolated subagent forks (`vault-mind-{role}` agents). No chat pollution, no manual triggers.
|
|
18
|
+
- **Multi-Agent Architecture** — five specialist agents under the `vault-mind-{role}` skill naming: **Manager** (interactive orchestrator), **Miner** (research + entity extraction), **Broadcaster** (NotebookLM artifacts), **Heavy-Lifter** (external delegation), **Watcher** (passive file observer).
|
|
19
|
+
- **LanceDB Vector + FTS + Graph** — hybrid semantic + keyword search with automatic entity extraction and BFS graph traversal. All local, no external binaries.
|
|
20
|
+
- **JSONL Source-of-Truth + LanceDB Index** — every fact lives in a durable, human-readable, version-control-friendly `collections/*.jsonl` file. The LanceDB index is derived and rebuildable via `/wiki reindex --all --reembed`.
|
|
21
|
+
- **Bidirectional Obsidian Sync** — substantial entries (`>200 chars` or tagged `decision`/`insight`/`requirement`) auto-write to `Vault/Agent/Inbox/`. Graph entities render as Obsidian Canvas files.
|
|
22
|
+
- **Two-Layer Config** — global (`~/.pi/agent/vault-mind.config.json`) for shared settings, project (`./pi-vault-mind.config.json`) for project-specific knowledge. Works across all projects from any directory.
|
|
23
|
+
- **Interactive Setup Wizard** — `/wiki setup` walks through vault path, embedding provider, and model selection. CLI mode: `--vault`, `--provider`, `--model` flags for scripting.
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────────────────────────────┐
|
|
29
|
+
│ User prompt │
|
|
30
|
+
│ e.g. "draft login" │
|
|
31
|
+
└──────┬──────────────────────────────────┘
|
|
32
|
+
│
|
|
33
|
+
▼
|
|
34
|
+
┌─────────────────────────────────────────┐
|
|
35
|
+
│ Injector regex match │
|
|
36
|
+
│ → matches "draft\s+(\S+)" │
|
|
37
|
+
└──────┬──────────────────────────────────┘
|
|
38
|
+
│
|
|
39
|
+
▼
|
|
40
|
+
┌─────────────────────────────────────────┐
|
|
41
|
+
│ query collections/main.jsonl │
|
|
42
|
+
│ where tag="login" + inject artifact.md │
|
|
43
|
+
└──────┬──────────────────────────────────┘
|
|
44
|
+
│
|
|
45
|
+
▼
|
|
46
|
+
┌─────────────────────────────────────────┐
|
|
47
|
+
│ Appended to system prompt │
|
|
48
|
+
│ → LLM now has pre-fetched context │
|
|
49
|
+
└─────────────────────────────────────────┘
|
|
50
|
+
|
|
51
|
+
Data Layer:
|
|
52
|
+
┌─────────────────────────────────────────┐
|
|
53
|
+
│ JSONL WAL (collections/*.jsonl) │
|
|
54
|
+
│ ─ durable, human-readable, versionable │
|
|
55
|
+
│ │ │
|
|
56
|
+
│ ▼ (auto-embed on append) │
|
|
57
|
+
│ LanceDB (.lancedb/) │
|
|
58
|
+
│ ─ vector search + FTS + graph │
|
|
59
|
+
│ │ │
|
|
60
|
+
│ ▼ (graph extraction) │
|
|
61
|
+
│ Graph Tables (entities + relations) │
|
|
62
|
+
│ ─ entity linking + traversal │
|
|
63
|
+
└─────────────────────────────────────────┘
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
See [`docs/architecture/index.md`](docs/architecture/index.md) for the full agent flow.
|
|
67
|
+
|
|
68
|
+
## Obsidian Counterparts & Requirements
|
|
69
|
+
|
|
70
|
+
pi-vault-mind works on any directory, but for the **full Obsidian experience**, you need a few things in Obsidian itself:
|
|
71
|
+
|
|
72
|
+
### Required: An Obsidian vault
|
|
73
|
+
Just point `/wiki setup` at any directory used as an Obsidian vault. pi-vault-mind auto-detects `.obsidian/` and respects `.obsidian/`, `.git/`, `.trash/`.
|
|
74
|
+
|
|
75
|
+
### Recommended: Official Obsidian CLI (1.12+)
|
|
76
|
+
|
|
77
|
+
The [official Obsidian CLI](https://help.obsidian.md/cli) lets you install plugins, themes, and manage vault state from the terminal. **This is the safest, most direct install path** for pi-vault-mind's required plugins.
|
|
78
|
+
|
|
79
|
+
Install: Open Obsidian → **Settings → General → Command line interface** → enable. Follow the prompt to register the CLI to your system PATH. Restart your terminal. Test: `obsidian help`.
|
|
80
|
+
|
|
81
|
+
Then run:
|
|
82
|
+
```bash
|
|
83
|
+
obsidian plugin:install id=obsidian-git enable
|
|
84
|
+
obsidian plugin:install id=obsidian-breadcrumbs enable
|
|
85
|
+
obsidian plugin:install id=graph-analysis enable
|
|
86
|
+
obsidian plugin:install id=actions-uri enable
|
|
87
|
+
obsidian plugin:install id=shellcommands enable
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Full walkthrough: see [`docs/OBSIDIAN_SETUP.md`](docs/OBSIDIAN_SETUP.md).
|
|
91
|
+
|
|
92
|
+
### Recommended: Obsidian Community Plugins
|
|
93
|
+
|
|
94
|
+
| Plugin | Install ID | Why | Status |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| **obsidian-git** | `obsidian-git` | Auto-commits vault changes for backup & conflict resolution. Heavy-Lifter uses git worktrees for isolated refactors. | Essential |
|
|
97
|
+
| **Breadcrumbs** | `obsidian-breadcrumbs` | Parses typed edges (`agent:related-to`, `agent:derived-from`) in YAML frontmatter. The recommended way to display the agent-extracted knowledge graph in Obsidian's UI. | Highly recommended |
|
|
98
|
+
| **Graph Analysis** | `graph-analysis` | Co-citation discovery, Jaccard similarity on the native Obsidian graph. Surfaces "always cited together but not yet linked" notes — a key agent discovery signal. | Highly recommended |
|
|
99
|
+
| **Actions URI** | `actions-uri` | `x-callback-url` endpoints so the Manager agent can trigger Obsidian UI commands (open notes, run commands) from pi. | Recommended |
|
|
100
|
+
| **obsidian-shellcommands** | `shellcommands` | Bridge from Obsidian events (e.g., file save) to pi agent workflows. Configure a `curl` to `http://127.0.0.1:11435/vault-mind/scan` on file save. | Recommended |
|
|
101
|
+
|
|
102
|
+
### Recommended: `notesmd-cli` (headless alternative)
|
|
103
|
+
|
|
104
|
+
For headless operations, CI, or when Obsidian isn't running, use [Yakitrak/notesmd-cli](https://github.com/Yakitrak/notesmd-cli). It does everything the official CLI does but doesn't require Obsidian to be open.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
brew tap yakitrak/yakitrak && brew install yakitrak/yakitrak/notesmd-cli
|
|
108
|
+
# or scoop, AUR, etc.
|
|
109
|
+
|
|
110
|
+
notesmd-cli add-vault /path/to/vault
|
|
111
|
+
notesmd-cli create "Note.md" --content "..." --append
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Use the official `obsidian` CLI when Obsidian is running; use `notesmd-cli` when it isn't.
|
|
115
|
+
|
|
116
|
+
### Beta plugins via BRAT
|
|
117
|
+
|
|
118
|
+
For beta plugins not in the official store:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Install BRAT first
|
|
122
|
+
obsidian plugin:install id=obsidian42-brat enable
|
|
123
|
+
|
|
124
|
+
# Then add beta plugin URLs via BRAT's interface, or:
|
|
125
|
+
# In Obsidian: Settings → BRAT → Beta Plugin List → Add
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Recommended: kepano/obsidian-skills (pi skills)
|
|
129
|
+
|
|
130
|
+
Install via the official [`skills` CLI](https://github.com/vercel-labs/skills)
|
|
131
|
+
(pi is a first-class target agent — auto-detected):
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Non-interactive: install all 5 globally for pi
|
|
135
|
+
DISABLE_TELEMETRY=1 yes y | npx -y skills add https://github.com/kepano/obsidian-skills \
|
|
136
|
+
--skill obsidian-markdown --skill obsidian-bases \
|
|
137
|
+
--skill json-canvas --skill obsidian-cli --skill defuddle \
|
|
138
|
+
-g -a pi --copy -y
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
This puts them at `~/.pi/agent/skills/<name>/SKILL.md` where pi
|
|
142
|
+
auto-discovers them. The CLI handles agent detection, symlink/copy,
|
|
143
|
+
and security risk confirmations.
|
|
144
|
+
|
|
145
|
+
**Verify they're discoverable:**
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
for s in obsidian-markdown obsidian-bases json-canvas obsidian-cli defuddle; do
|
|
149
|
+
[ -f ~/.pi/agent/skills/$s/SKILL.md ] && echo "✅ $s" || echo "❌ $s"
|
|
150
|
+
done
|
|
151
|
+
```
|
|
152
|
+
- `obsidian-markdown` — agent learns Obsidian-flavored markdown syntax
|
|
153
|
+
- `obsidian-bases` — agent learns to generate valid `.base` files (database views)
|
|
154
|
+
- `json-canvas` — agent learns Canvas JSON format (used for our graph sync)
|
|
155
|
+
- `obsidian-cli` — agent learns to use the Obsidian CLI
|
|
156
|
+
- `defuddle` — cleaner markdown extraction from web pages
|
|
157
|
+
|
|
158
|
+
These skills let the **Miner, Broadcaster, and Heavy-Lifter agents** produce valid Obsidian content.
|
|
159
|
+
|
|
160
|
+
### Built-in Obsidian features used
|
|
161
|
+
|
|
162
|
+
| Feature | How pi-vault-mind uses it |
|
|
163
|
+
|---|---|
|
|
164
|
+
| **YAML frontmatter properties** | Strict schema for typed edges (`agent:related-to`, `status: needs-podcast`, `domain:`, `tag:`) |
|
|
165
|
+
| **Callouts** | `> [!info]`, `> [!warning]` for syntheses and contradictions |
|
|
166
|
+
| **Embeds** | `![[Note]]` to transclude summaries into synthesis docs |
|
|
167
|
+
| **Obsidian Bases (`.base`)** | Agent-generated dynamic tables/boards/kanbans in `Agent/Tasks/` |
|
|
168
|
+
| **JSON Canvas (`.canvas`)** | `wiki_sync(format="canvas")` writes entity graph as Canvas JSON |
|
|
169
|
+
| **Obsidian Sync** | Primary sync mechanism across devices |
|
|
170
|
+
|
|
171
|
+
### Optional: NotebookLM integration (Broadcaster)
|
|
172
|
+
|
|
173
|
+
The Broadcaster agent can generate podcasts, study guides, and slide decks from vault content via the [notebooklm-mcp-cli](https://github.com/jacob-bd/notebooklm-mcp-cli) MCP server. Requires Google account login.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Quick Start
|
|
178
|
+
|
|
179
|
+
### Prerequisites
|
|
180
|
+
|
|
181
|
+
- **Node.js** 20+ (matches `engines` in `package.json`)
|
|
182
|
+
- **Embedding Provider** — choose one:
|
|
183
|
+
- `@xenova/transformers` — built-in, no external deps (uses all-MiniLM-L6-v2, offline-capable)
|
|
184
|
+
- `ollama` — requires Ollama running locally with `embeddinggemma` (higher quality)
|
|
185
|
+
|
|
186
|
+
### 1. Install with pi
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
pi install npm:pi-vault-mind # latest
|
|
190
|
+
pi install npm:pi-vault-mind@0.7.0 # pinned
|
|
191
|
+
pi -e npm:pi-vault-mind # try without installing
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Or from git:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
pi install git:git@github.com:kylebrodeur/pi-vault-mind
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 2. Configure (interactive wizard)
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
/wiki setup
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
This walks you through: vault path → embedding provider → Ollama model (if applicable).
|
|
207
|
+
|
|
208
|
+
Or via CLI for scripting:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
/wiki setup --vault /home/you/Obsidian/MyVault --provider transformers
|
|
212
|
+
/wiki setup --vault /home/you/Obsidian/MyVault --provider ollama --model embeddinggemma
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Config is written to `~/.pi/agent/vault-mind.config.json` — it applies globally
|
|
216
|
+
no matter which project directory you open pi from.
|
|
217
|
+
|
|
218
|
+
You can re-run `/wiki setup` anytime to view or change settings.
|
|
219
|
+
|
|
220
|
+
### 3. Start using
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
append_wiki(collection="main", mode="autopilot", entry={"id":"1","domain":"auth","fact":"JWT tokens expire after 1 hour","tag":"security"})
|
|
224
|
+
wiki_search(collection="main", query="token expiry")
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Entries are automatically embedded and stored in LanceDB. If graph is enabled, entities and relations are also extracted.
|
|
228
|
+
|
|
229
|
+
### 4. Adapt the config
|
|
230
|
+
|
|
231
|
+
Edit `pi-vault-mind.config.json` to match your domain:
|
|
232
|
+
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"version": 2,
|
|
236
|
+
"collections": {
|
|
237
|
+
"main": {
|
|
238
|
+
"path": "collections/main.jsonl",
|
|
239
|
+
"schema": ["id", "domain", "source", "fact", "tag", "artifact"],
|
|
240
|
+
"dedupField": "fact"
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"injectors": [
|
|
244
|
+
{
|
|
245
|
+
"name": "draft-context",
|
|
246
|
+
"regex": "draft\\s+(\\S+)",
|
|
247
|
+
"collection": "main",
|
|
248
|
+
"filterField": "tag"
|
|
249
|
+
}
|
|
250
|
+
],
|
|
251
|
+
"wiki": {
|
|
252
|
+
"dataDir": ".lancedb",
|
|
253
|
+
"embedding": {
|
|
254
|
+
"provider": "transformers",
|
|
255
|
+
"ollamaModel": "embeddinggemma",
|
|
256
|
+
"ollamaHost": "http://127.0.0.1:11434"
|
|
257
|
+
},
|
|
258
|
+
"ftsEnabled": true,
|
|
259
|
+
"graph": { "enabled": true, "canvasSync": false }
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Example domains
|
|
265
|
+
|
|
266
|
+
### Research project
|
|
267
|
+
|
|
268
|
+
```json
|
|
269
|
+
{
|
|
270
|
+
"collections": {
|
|
271
|
+
"findings": {
|
|
272
|
+
"path": "research/findings.jsonl",
|
|
273
|
+
"schema": ["id", "paper", "claim", "evidence", "confidence", "tag"],
|
|
274
|
+
"dedupField": "claim"
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
"injectors": [
|
|
278
|
+
{
|
|
279
|
+
"name": "lit-review",
|
|
280
|
+
"regex": "review\\s+(\\S+)",
|
|
281
|
+
"collection": "findings",
|
|
282
|
+
"filterField": "tag",
|
|
283
|
+
"artifactPath": "research/synthesis.md"
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Decision log
|
|
290
|
+
|
|
291
|
+
```json
|
|
292
|
+
{
|
|
293
|
+
"collections": {
|
|
294
|
+
"decisions": {
|
|
295
|
+
"path": "decisions/log.jsonl",
|
|
296
|
+
"schema": [
|
|
297
|
+
"id",
|
|
298
|
+
"date",
|
|
299
|
+
"context",
|
|
300
|
+
"decision",
|
|
301
|
+
"rationale",
|
|
302
|
+
"status",
|
|
303
|
+
"owner"
|
|
304
|
+
],
|
|
305
|
+
"dedupField": "decision"
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
"injectors": [
|
|
309
|
+
{
|
|
310
|
+
"name": "decide",
|
|
311
|
+
"regex": "decide\\s+(\\S+)",
|
|
312
|
+
"collection": "decisions",
|
|
313
|
+
"filterField": "context"
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Tools
|
|
320
|
+
|
|
321
|
+
| Tool | Purpose |
|
|
322
|
+
| ------------------ | ------------------------------------------------------- |
|
|
323
|
+
| `wiki_search` | Semantic search via LanceDB (vector + FTS) |
|
|
324
|
+
| `wiki_fts_search` | Exact keyword full-text search (Tantivy BM25) |
|
|
325
|
+
| `wiki_graph_query` | Traverse entity connections in the graph layer |
|
|
326
|
+
| `wiki_status` | Show LanceDB table sizes and health |
|
|
327
|
+
| `query_wiki` | Deterministic JSONL search by collection name |
|
|
328
|
+
| `append_wiki` | Append with strict/gated/autopilot modes + dual-write |
|
|
329
|
+
| `configure_wiki` | Read or update config at runtime |
|
|
330
|
+
| `describe_wiki` | Introspect schema, count, and sample entries |
|
|
331
|
+
| `wiki_stats` | Dashboard: counts, sizes, LanceDB status |
|
|
332
|
+
| `wiki_export` | Export to JSON, CSV, or Markdown |
|
|
333
|
+
| `promote_wiki` | Promote entries between collections via pending queue |
|
|
334
|
+
|
|
335
|
+
## Commands
|
|
336
|
+
|
|
337
|
+
| Command | Purpose |
|
|
338
|
+
| ------------------------------ | -------------------------------------------------------- |
|
|
339
|
+
| `/wiki help` | Show usage help |
|
|
340
|
+
| `/wiki setup` | **Interactive global config wizard** (vault, embedding) |
|
|
341
|
+
| `/wiki init` | Scaffold project config + collections |
|
|
342
|
+
| `/wiki validate` | Health check LanceDB, config, and all collection paths |
|
|
343
|
+
| `/wiki approve [collection]` | Batch-review pending entries |
|
|
344
|
+
| `/wiki settings` | Open interactive settings dashboard |
|
|
345
|
+
| `/wiki audit` | Audit config for missing defaults |
|
|
346
|
+
| `/wiki reindex [--all] [--reembed]` | Rebuild FTS + vector indexes |
|
|
347
|
+
| `/wiki collection select` | Select active collection (shortcut: ctrl+alt+l) |
|
|
348
|
+
| `/wiki collection create` | Interactive wizard to create a new collection |
|
|
349
|
+
| `/wiki injector create` | Interactive wizard to create a new injector |
|
|
350
|
+
| `/wiki context enable \| disable \| status` | Manage pi-context integration |
|
|
351
|
+
| `/wiki embedding status \| use \| model \| models \| pull` | Manage embedding provider |
|
|
352
|
+
| `/wiki watcher start \| stop \| status` | Manage the passive file watcher |
|
|
353
|
+
| `/wiki server status` | Show HTTP server status, port, and uptime |
|
|
354
|
+
|
|
355
|
+
## Documentation
|
|
356
|
+
|
|
357
|
+
> **Full docs site:** [kylebrodeur.github.io/pi-vault-mind](https://kylebrodeur.github.io/pi-vault-mind/) (GH Pages, built from [`docs/`](docs/)).
|
|
358
|
+
> The links below point to the source files in this repository.
|
|
359
|
+
|
|
360
|
+
### Getting started
|
|
361
|
+
|
|
362
|
+
| Doc | Description |
|
|
363
|
+
|---|---|
|
|
364
|
+
| [docs/QUICKSTART.md](docs/QUICKSTART.md) | **Fastest path** — 60-second install, setup, first append |
|
|
365
|
+
| [docs/INSTALL.md](docs/INSTALL.md) | **Canonical install playbook** — all 5 layers (pi ext, skills, Obsidian, config, external CLIs) |
|
|
366
|
+
| [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md) | End-to-end workflow + daily "drop & forget" usage |
|
|
367
|
+
| [docs/WALKTHROUGH_PROMPT.md](docs/WALKTHROUGH_PROMPT.md) | Paste-into-pi guided setup with checkpoints between phases |
|
|
368
|
+
|
|
369
|
+
### Architecture & design
|
|
370
|
+
|
|
371
|
+
| Doc | Description |
|
|
372
|
+
|---|---|
|
|
373
|
+
| [docs/AGENTS.md](docs/AGENTS.md) | Agent Roster and Multi-Agent Architecture ("Fork & Review" model) |
|
|
374
|
+
| [docs/EXTENSION_WIRING.md](docs/EXTENSION_WIRING.md) | Extension dependencies, runtime wiring, auto-install patterns |
|
|
375
|
+
| [docs/DISPATCHER_SPEC.md](docs/DISPATCHER_SPEC.md) | Technical spec for the passive file-watcher and subagent routing |
|
|
376
|
+
| [docs/PASSIVE_INTERACTION_MODEL.md](docs/PASSIVE_INTERACTION_MODEL.md) | "Fork & Dispatch" model — why we don't pollute the main chat session |
|
|
377
|
+
| [docs/PASSIVE_INGESTION_WORKFLOW.md](docs/PASSIVE_INGESTION_WORKFLOW.md) | The "Drop & Forget" document ingestion pipeline |
|
|
378
|
+
| [docs/NOTEBOOKLM_PIPELINE.md](docs/NOTEBOOKLM_PIPELINE.md) | NotebookLM automated podcast and study guide generation |
|
|
379
|
+
| [docs/OBSIDIAN_SETUP.md](docs/OBSIDIAN_SETUP.md) | Recommended Obsidian vault structure, plugins, and CLI |
|
|
380
|
+
|
|
381
|
+
### Reference
|
|
382
|
+
|
|
383
|
+
| Doc | Description |
|
|
384
|
+
|---|---|
|
|
385
|
+
| [skills/vault-mind/SKILL.md](skills/vault-mind/SKILL.md) | The Manager skill — what pi auto-loads about this extension |
|
|
386
|
+
| [docs/CHANGELOG.md](docs/CHANGELOG.md) | Version history (rename from `pi-llm-wiki` to `pi-vault-mind` was v0.7.0) |
|
|
387
|
+
| [docs/reference/tools.md](docs/reference/tools.md) | The 11 `wiki_*` and `query_wiki`/`append_wiki`/etc. tools — parameters, return shapes |
|
|
388
|
+
| [docs/reference/commands.md](docs/reference/commands.md) | Full `/wiki` slash command tree |
|
|
389
|
+
| [docs/reference/configuration.md](docs/reference/configuration.md) | The complete `pi-vault-mind.config.json` schema |
|
|
390
|
+
| [docs/reference/skill.md](docs/reference/skill.md) | Manifest of all bundled skills and their trigger phrases |
|
|
391
|
+
|
|
392
|
+
### Testing
|
|
393
|
+
|
|
394
|
+
| Doc | Description |
|
|
395
|
+
|---|---|
|
|
396
|
+
| [docs/TESTING.md](docs/TESTING.md) | Test plan for agent / human / HITL personas, regression suite |
|
|
397
|
+
| [docs/E2E_MANUAL_TEST.md](docs/E2E_MANUAL_TEST.md) | Manual end-to-end verification procedure (watcher → dispatch → vault) |
|
|
398
|
+
|
|
399
|
+
### Development
|
|
400
|
+
|
|
401
|
+
| Doc | Description |
|
|
402
|
+
|---|---|
|
|
403
|
+
| [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) | Dev setup, testing, and commit conventions |
|
|
404
|
+
| [docs/dev/PUBLISHING.md](docs/dev/PUBLISHING.md) | How to publish this extension to npm |
|
|
405
|
+
| [docs/dev/FUTURE_WORK.md](docs/dev/FUTURE_WORK.md) | Roadmap — codegraph integration, pagination, TUI rendering, etc. |
|
|
406
|
+
|
|
407
|
+
### Research
|
|
408
|
+
|
|
409
|
+
| Doc | Description |
|
|
410
|
+
|---|---|
|
|
411
|
+
| [docs/COMPETITOR_COMPARISON.md](docs/COMPETITOR_COMPARISON.md) | Tier 1/2/3 comparison vs. other Obsidian-LLM tools (22 competitors) |
|
|
412
|
+
| [docs/research/naming-decisions.md](docs/research/naming-decisions.md) | Historical record of the 2026-06-06 decision to name the project `pi-vault-mind` |
|
|
413
|
+
| [docs/research/obsidian-links-reviewed.csv](docs/research/obsidian-links-reviewed.csv) | Curated subset of starred Obsidian repos with adoption verdicts |
|
|
414
|
+
|
|
415
|
+
### Archive
|
|
416
|
+
|
|
417
|
+
| Doc | Description |
|
|
418
|
+
|---|---|
|
|
419
|
+
| [docs/_archive/](docs/_archive/) | Historical docs kept for context (e.g. the `pi-llm-wiki` → `pi-vault-mind` rename audit) |
|
|
420
|
+
| [docs/plans/legacy-audit.md](docs/plans/legacy-audit.md) | The 2026-06-08 legacy-terminology audit (139 findings, 13 blockers) and its resolution log (in the repo, not on the docs site) |
|
|
421
|
+
|
|
422
|
+
## Contributing
|
|
423
|
+
|
|
424
|
+
See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) for dev setup, testing, and commit conventions.
|
|
425
|
+
|
|
426
|
+
## License
|
|
427
|
+
|
|
428
|
+
MIT — see [LICENSE](LICENSE) (or package.json).
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./src/index.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./src/index.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { ServerState } from "./server.js";
|
|
3
|
+
export declare const auditConfig: (ctx: ExtensionContext) => Promise<void>;
|
|
4
|
+
export declare const selectActiveCollection: (ctx: ExtensionContext) => Promise<void>;
|
|
5
|
+
export declare const watcherState: import("./watcher.js").WatcherState;
|
|
6
|
+
/** Module-level server state, referenced by the /wiki server command.
|
|
7
|
+
* Port is set when the server starts in index.ts. */
|
|
8
|
+
export declare const serverState: ServerState;
|
|
9
|
+
export declare const registerCommands: (pi: ExtensionAPI) => void;
|