grounder 0.2.0 → 0.4.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 +179 -66
- package/dist/agents/claude.d.ts +1 -0
- package/dist/agents/claude.d.ts.map +1 -1
- package/dist/agents/claude.js +37 -13
- package/dist/agents/claude.js.map +1 -1
- package/dist/agents/cursor.d.ts +1 -0
- package/dist/agents/cursor.d.ts.map +1 -1
- package/dist/agents/cursor.js +37 -13
- package/dist/agents/cursor.js.map +1 -1
- package/dist/agents/hook-runtime.d.ts +65 -21
- package/dist/agents/hook-runtime.d.ts.map +1 -1
- package/dist/agents/hook-runtime.js +172 -31
- package/dist/agents/hook-runtime.js.map +1 -1
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +27 -4
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/install-command.d.ts +35 -0
- package/dist/agents/install-command.d.ts.map +1 -0
- package/dist/agents/install-command.js +65 -0
- package/dist/agents/install-command.js.map +1 -0
- package/dist/agents/types.d.ts +19 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/cli.js +62 -60
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply-agent-installs.d.ts +34 -0
- package/dist/commands/apply-agent-installs.d.ts.map +1 -0
- package/dist/commands/apply-agent-installs.js +137 -0
- package/dist/commands/apply-agent-installs.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +278 -60
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/handoff/list.d.ts +15 -7
- package/dist/commands/handoff/list.d.ts.map +1 -1
- package/dist/commands/handoff/list.js +21 -13
- package/dist/commands/handoff/list.js.map +1 -1
- package/dist/commands/handoff/peek.d.ts +5 -2
- package/dist/commands/handoff/peek.d.ts.map +1 -1
- package/dist/commands/handoff/peek.js +47 -6
- package/dist/commands/handoff/peek.js.map +1 -1
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +5 -0
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/migrate.d.ts +23 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +104 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/note/list.d.ts +28 -0
- package/dist/commands/note/list.d.ts.map +1 -0
- package/dist/commands/note/list.js +72 -0
- package/dist/commands/note/list.js.map +1 -0
- package/dist/commands/note.d.ts.map +1 -1
- package/dist/commands/note.js +6 -1
- package/dist/commands/note.js.map +1 -1
- package/dist/commands/output.d.ts +27 -0
- package/dist/commands/output.d.ts.map +1 -0
- package/dist/commands/output.js +51 -0
- package/dist/commands/output.js.map +1 -0
- package/dist/commands/package-version-notice.d.ts +18 -0
- package/dist/commands/package-version-notice.d.ts.map +1 -0
- package/dist/commands/package-version-notice.js +39 -0
- package/dist/commands/package-version-notice.js.map +1 -0
- package/dist/commands/path/logs.d.ts +1 -1
- package/dist/commands/path/logs.d.ts.map +1 -1
- package/dist/commands/path/logs.js +6 -1
- package/dist/commands/path/logs.js.map +1 -1
- package/dist/commands/path/notes.d.ts +1 -1
- package/dist/commands/path/notes.d.ts.map +1 -1
- package/dist/commands/path/notes.js +6 -1
- package/dist/commands/path/notes.js.map +1 -1
- package/dist/commands/path/plans.d.ts +7 -0
- package/dist/commands/path/plans.d.ts.map +1 -0
- package/dist/commands/path/plans.js +22 -0
- package/dist/commands/path/plans.js.map +1 -0
- package/dist/commands/plan/list.d.ts +31 -0
- package/dist/commands/plan/list.d.ts.map +1 -0
- package/dist/commands/plan/list.js +75 -0
- package/dist/commands/plan/list.js.map +1 -0
- package/dist/commands/plan.d.ts +34 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +121 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/repo/init.d.ts.map +1 -1
- package/dist/commands/repo/init.js +12 -1
- package/dist/commands/repo/init.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +62 -18
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade-banner.d.ts +9 -0
- package/dist/commands/upgrade-banner.d.ts.map +1 -0
- package/dist/commands/upgrade-banner.js +27 -0
- package/dist/commands/upgrade-banner.js.map +1 -0
- package/dist/commands/vault/init.d.ts.map +1 -1
- package/dist/commands/vault/init.js +18 -29
- package/dist/commands/vault/init.js.map +1 -1
- package/dist/connector/repo.d.ts +2 -0
- package/dist/connector/repo.d.ts.map +1 -1
- package/dist/connector/repo.js +12 -1
- package/dist/connector/repo.js.map +1 -1
- package/dist/connector/state.d.ts +86 -0
- package/dist/connector/state.d.ts.map +1 -0
- package/dist/connector/state.js +171 -0
- package/dist/connector/state.js.map +1 -0
- package/dist/connector/unsupported-schema.d.ts +9 -0
- package/dist/connector/unsupported-schema.d.ts.map +1 -0
- package/dist/connector/unsupported-schema.js +14 -0
- package/dist/connector/unsupported-schema.js.map +1 -0
- package/dist/connector/vault.d.ts +2 -0
- package/dist/connector/vault.d.ts.map +1 -1
- package/dist/connector/vault.js +6 -1
- package/dist/connector/vault.js.map +1 -1
- package/dist/help.d.ts +45 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +368 -0
- package/dist/help.js.map +1 -0
- package/dist/util/fs.d.ts +6 -0
- package/dist/util/fs.d.ts.map +1 -1
- package/dist/util/fs.js +15 -1
- package/dist/util/fs.js.map +1 -1
- package/dist/util/hash.d.ts +3 -0
- package/dist/util/hash.d.ts.map +1 -0
- package/dist/util/hash.js +6 -0
- package/dist/util/hash.js.map +1 -0
- package/dist/util/parse-args.d.ts.map +1 -1
- package/dist/util/parse-args.js +11 -2
- package/dist/util/parse-args.js.map +1 -1
- package/dist/util/path.d.ts +10 -0
- package/dist/util/path.d.ts.map +1 -1
- package/dist/util/path.js +31 -0
- package/dist/util/path.js.map +1 -1
- package/dist/util/plan-name.d.ts +10 -0
- package/dist/util/plan-name.d.ts.map +1 -0
- package/dist/util/plan-name.js +18 -0
- package/dist/util/plan-name.js.map +1 -0
- package/dist/util/semver.d.ts +10 -0
- package/dist/util/semver.d.ts.map +1 -0
- package/dist/util/semver.js +40 -0
- package/dist/util/semver.js.map +1 -0
- package/dist/vault/layout.d.ts +2 -0
- package/dist/vault/layout.d.ts.map +1 -1
- package/dist/vault/layout.js +4 -0
- package/dist/vault/layout.js.map +1 -1
- package/dist/vault/list-notes.d.ts +15 -0
- package/dist/vault/list-notes.d.ts.map +1 -0
- package/dist/vault/list-notes.js +44 -0
- package/dist/vault/list-notes.js.map +1 -0
- package/dist/vault/list-plans.d.ts +11 -0
- package/dist/vault/list-plans.d.ts.map +1 -0
- package/dist/vault/list-plans.js +40 -0
- package/dist/vault/list-plans.js.map +1 -0
- package/dist/vault/write-plan.d.ts +28 -0
- package/dist/vault/write-plan.d.ts.map +1 -0
- package/dist/vault/write-plan.js +61 -0
- package/dist/vault/write-plan.js.map +1 -0
- package/package.json +5 -3
- package/templates/agents/claude/commands/grounder-note.md +25 -3
- package/templates/agents/claude/commands/grounder-plan.md +69 -0
- package/templates/agents/claude/commands/grounder-task-handoff.md +3 -3
- package/templates/agents/claude/commands/grounder-task.md +5 -3
- package/templates/agents/cursor/commands/grounder-note.md +26 -4
- package/templates/agents/cursor/commands/grounder-plan.md +69 -0
- package/templates/agents/cursor/commands/grounder-task-handoff.md +4 -4
- package/templates/agents/cursor/commands/grounder-task.md +6 -4
- package/templates/vault/plan.md +16 -0
package/README.md
CHANGED
|
@@ -3,16 +3,41 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/grounder)
|
|
4
4
|
[](../../LICENSE)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
> **Markdown-native memory shared across AI agents, sessions, and machines.**
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
AI agents forget everything between sessions and can't share context with each other. **Grounder** fixes this by externalizing agent memory into local files you control (Obsidian-compatible, but never required). Context survives session ends, agent switches, and machine migrations.
|
|
9
|
+
|
|
10
|
+
### What it is
|
|
11
|
+
|
|
12
|
+
AI-first CLI and agent command set that:
|
|
13
|
+
|
|
14
|
+
- **Connects any project** — git repositories or standard folders — to your local vault (multi-project support).
|
|
15
|
+
- **Captures state deliberately** — converts a discussion into a living plan, checkpoints a session for handoff, or saves arbitrary notes.
|
|
16
|
+
- **Hydrates on demand** — allows you or any agent to resume exactly where a prior session left off without re-deriving context.
|
|
17
|
+
- **Works natively today** with Cursor, Claude Code, and standard CLI workflows.
|
|
18
|
+
|
|
19
|
+
### What it is not
|
|
20
|
+
|
|
21
|
+
Grounder is **not** an auto-capture or RAG tool, nor does it attempt to record every interaction. There is no vector database, no background indexing, and zero context injection unless explicitly requested. One small, deliberate checkpoint replaces an agent re-deriving context from scratch — using a fraction of the tokens in a file you can diff, edit, or delete.
|
|
22
|
+
|
|
23
|
+
### Demo
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
A full session loop, one step at a time:
|
|
28
|
+
|
|
29
|
+
- **Peek hook** resumes a prior handoff automatically at session start
|
|
30
|
+
- **`/grounder-task`** picks up the next step from that handoff
|
|
31
|
+
- **`/grounder-plan list`** shows the real plans already sitting in the vault
|
|
32
|
+
- Continuing a plan by name — plain chat works too, not just slash commands
|
|
33
|
+
- **`/grounder-note`** captures a quick mid-session insight
|
|
34
|
+
- **`/grounder-task-handoff`** checkpoints the session on close
|
|
35
|
+
|
|
36
|
+
Dim lines are the actual `grounder` CLI call each slash command runs under the hood. Regenerated with `pnpm demo:cast` from [`@grounder/demo-casts`](../demo-casts/).
|
|
12
37
|
|
|
13
38
|
**Requirements:** Node.js 18+ and an Obsidian vault on disk. Git is optional but used when present (project id detection and link lookup bounds).
|
|
14
39
|
|
|
15
|
-
**Contents:** [Install](#install) · [Quickstart](#quickstart) · [Setup overview](#setup-overview) · [Commands](#commands) · [Configuration](#configuration) · [Agents](#agents) · [Session-start hooks](#session-start-hooks) · [Troubleshooting](#troubleshooting)
|
|
40
|
+
**Contents:** [Install](#install) · [Upgrading](#upgrading) · [Quickstart](#quickstart) · [Setup overview](#setup-overview) · [Commands](#commands) · [Configuration](#configuration) · [Agents](#agents) · [Session-start hooks](#session-start-hooks) · [Troubleshooting](#troubleshooting) · [Roadmap](#roadmap)
|
|
16
41
|
|
|
17
42
|
## Install
|
|
18
43
|
|
|
@@ -26,7 +51,17 @@ Or run without installing:
|
|
|
26
51
|
npx grounder --help
|
|
27
52
|
```
|
|
28
53
|
|
|
29
|
-
`grounder -h` prints the full reference; `grounder -v` prints the installed version.
|
|
54
|
+
`grounder -h` prints a short synopsis; `grounder --help` (or `grounder help`) prints the full reference; `grounder -v` prints the installed version.
|
|
55
|
+
|
|
56
|
+
## Upgrading
|
|
57
|
+
|
|
58
|
+
After upgrading the package, refresh agent installs:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
grounder migrate
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Run `grounder doctor` if you’re unsure — it hints when plain `migrate` is enough vs `migrate --force` (needed **once** when upgrading from Grounder before 0.3, or when command files were edited locally). Most grounder commands and session-start teasers will also tell you when a migrate is due. Flag details: [Migrate flags](#migrate-flags).
|
|
30
65
|
|
|
31
66
|
## Quickstart
|
|
32
67
|
|
|
@@ -37,7 +72,7 @@ npx grounder --help
|
|
|
37
72
|
# --hooks adds an optional one-line session-start reminder (see Session-start hooks)
|
|
38
73
|
grounder vault init <path-to-your-vault> --hooks
|
|
39
74
|
|
|
40
|
-
# Once per project folder — link project id to vault notes/ + logs/
|
|
75
|
+
# Once per project folder — link project id to vault notes/ + logs/ + plans/
|
|
41
76
|
cd your-project
|
|
42
77
|
grounder init
|
|
43
78
|
```
|
|
@@ -66,13 +101,17 @@ Both commands preview what they'll write and ask to confirm; add `--yes` to skip
|
|
|
66
101
|
No agent, or want to write by hand? The same actions are plain CLI commands:
|
|
67
102
|
|
|
68
103
|
```bash
|
|
69
|
-
grounder note "Investigate auth middleware"
|
|
70
|
-
grounder handoff
|
|
71
|
-
grounder handoff list
|
|
104
|
+
grounder note "Investigate auth middleware" # ad-hoc note
|
|
105
|
+
grounder handoff $'# Handoff: ...\n\n## Next\n1. ...' # session checkpoint
|
|
106
|
+
grounder handoff list # newest handoffs, for manual hydrate
|
|
107
|
+
grounder plan $'# Goal\n\nShip it' --title phase-1 # named living plan
|
|
72
108
|
```
|
|
73
109
|
|
|
74
110
|
Notes land in `<vault>/10-Projects/{projectId}/notes/`.
|
|
75
|
-
Handoffs land in `<vault>/10-Projects/{projectId}/logs/` (one file per close; newest *usable* file wins — an empty or unreadable newest file falls back to the next one).
|
|
111
|
+
Handoffs land in `<vault>/10-Projects/{projectId}/logs/` (one file per close; newest *usable* file wins — an empty or unreadable newest file falls back to the next one).
|
|
112
|
+
Plans land in `<vault>/10-Projects/{projectId}/plans/` (one file per `--title`; overwrite only with `--force`).
|
|
113
|
+
|
|
114
|
+
Unlike `note` (one-off) and `handoff` (per-session checkpoint), `plan` is for anything spanning multiple sessions — write it once with the goal + steps, then re-run with `--force` as the work progresses to keep one file current instead of scattering updates across handoffs.
|
|
76
115
|
|
|
77
116
|
Inspect or debug setup any time with `grounder status` / `grounder doctor` — see [Troubleshooting](#troubleshooting).
|
|
78
117
|
|
|
@@ -82,19 +121,24 @@ Inspect or debug setup any time with `grounder status` / `grounder doctor` — s
|
|
|
82
121
|
(optional teaser) → /grounder-task → work → /grounder-task-handoff → next session
|
|
83
122
|
```
|
|
84
123
|
|
|
85
|
-
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
| `/grounder-
|
|
89
|
-
| `/grounder-task` | `grounder handoff
|
|
124
|
+
|
|
125
|
+
| Slash command | Equivalent CLI | Role |
|
|
126
|
+
| ------------------------ | ---------------------------------------- | ---------------------------------------------------------- |
|
|
127
|
+
| `/grounder-note` | `grounder note` | Ad-hoc vault note |
|
|
128
|
+
| `/grounder-task-handoff` | `grounder handoff` | Write session checkpoint to `logs/` |
|
|
129
|
+
| `/grounder-task` | `grounder handoff list --head` + read it | Read-only hydrate from newest usable handoff + `AGENTS.md` |
|
|
130
|
+
| `/grounder-plan` | `grounder plan` | Named living plan under `plans/` |
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
The "Equivalent CLI" column is what you'd type by hand — under the hood, slash commands invoke a small runtime `vault init` maintains at `~/.grounder/runtime` (see [Agents](#agents)), not whatever `grounder` binary happens to be on your `PATH`.
|
|
90
134
|
|
|
91
135
|
With `--hooks` on `vault init`, a new Cursor/Claude session may also print a one-line teaser when a handoff exists — never the full body. See [Session-start hooks](#session-start-hooks).
|
|
92
136
|
|
|
93
137
|
## Setup overview
|
|
94
138
|
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
- **Daily use** — notes, handoffs, and recall via CLI or slash commands; no further install.
|
|
139
|
+
- `grounder vault init <path>` (once per machine) writes `~/.grounder/config.json`, creates `<vault>/10-Projects/`, and installs slash commands for detected agents (Cursor → `~/.cursor/commands/`, Claude Code → `~/.claude/commands/`; override with `--agent=<id>`).
|
|
140
|
+
- `grounder init` (once per project folder) writes `.grounder.json` (`projectId` — safe to commit) and creates `<vault>/10-Projects/{projectId}/notes/`, `logs/`, and `plans/`.
|
|
141
|
+
- **Daily use** — notes, handoffs, plans, and recall via CLI or slash commands; no further install.
|
|
98
142
|
|
|
99
143
|
Nothing is written into the repo except the small `.grounder.json` marker. Agent artifacts stay under the user’s home directory; vault notes stay outside the project tree.
|
|
100
144
|
|
|
@@ -104,52 +148,100 @@ Nothing is written into the repo except the small `.grounder.json` marker. Agent
|
|
|
104
148
|
grounder vault init <path> Initialize vault + home config (once per machine)
|
|
105
149
|
grounder init Connect the current folder to your vault
|
|
106
150
|
grounder note <text> Write a note to the vault
|
|
151
|
+
grounder note list Print recent notes (count header + numbered title/path, newest first)
|
|
107
152
|
grounder handoff <text> Write a session handoff to vault logs/
|
|
108
|
-
grounder handoff list Print recent
|
|
153
|
+
grounder handoff list Print recent handoffs (count header + numbered title/path, newest first)
|
|
109
154
|
grounder handoff list --head Print only the newest usable handoff path
|
|
110
155
|
grounder handoff peek One-line latest-handoff teaser (used by session hooks)
|
|
156
|
+
grounder plan <text> Write/update a named plan under vault plans/
|
|
157
|
+
grounder plan list Print recent plans (count header + numbered title/path, newest first)
|
|
111
158
|
grounder path notes Print resolved notes directory
|
|
112
159
|
grounder path logs Print resolved logs directory
|
|
160
|
+
grounder path plans Print resolved plans directory
|
|
113
161
|
grounder status Snapshot of machine + project link + resolved paths
|
|
114
162
|
grounder doctor Health checks with fix hints
|
|
163
|
+
grounder migrate Refresh agent install after upgrading grounder
|
|
115
164
|
```
|
|
116
165
|
|
|
166
|
+
|
|
167
|
+
|
|
117
168
|
### Init flags
|
|
118
169
|
|
|
119
|
-
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
| `--
|
|
123
|
-
| `--
|
|
124
|
-
| `--
|
|
125
|
-
| `--
|
|
126
|
-
| `--
|
|
170
|
+
|
|
171
|
+
| Flag | Commands | Description |
|
|
172
|
+
| ---------------- | ------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
173
|
+
| `--yes` | `vault init`, `init` | Skip confirmation prompts |
|
|
174
|
+
| `--force` | `vault init`, `init`, `migrate` | Overwrite existing generated / locally-modified files |
|
|
175
|
+
| `--id <id>` | `init` | Override detected project id |
|
|
176
|
+
| `--vault <path>` | `init` | Override home vault root for this run |
|
|
177
|
+
| `--agent <id>` | `vault init`, `migrate` | Install for a specific agent (repeatable; default: auto-detect). Supported: `cursor`, `claude` |
|
|
178
|
+
| `--hooks` | `vault init`, `migrate` | Also install session-start teaser hooks (opt-in; see [Session-start hooks](#session-start-hooks)) |
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
### Migrate flags
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
| Flag | Description |
|
|
187
|
+
| -------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
188
|
+
| `--force` | Overwrite slash command files you edited locally; also needed **once** when upgrading from Grounder before 0.3 |
|
|
189
|
+
| `--dry-run` | Preview without writing |
|
|
190
|
+
| `--agent <id>` | Limit to a specific agent (repeatable) |
|
|
191
|
+
| `--hooks` | Install hooks even if they were never installed before |
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
See [Upgrading](#upgrading) for the usual post-package-upgrade flow. Untouched command files update automatically; locally edited ones (and pre-0.3 installs with no ledger) are skipped unless you pass `--force`.
|
|
127
195
|
|
|
128
196
|
### Note / handoff flags
|
|
129
197
|
|
|
130
|
-
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
| `--
|
|
134
|
-
| `--
|
|
198
|
+
|
|
199
|
+
| Flag | Commands | Description |
|
|
200
|
+
| ---------------- | --------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
201
|
+
| `--title <slug>` | `note`, `handoff` | Filename slug (default: slugified text / first line) |
|
|
202
|
+
| `--limit <n>` | `note list` | Max notes to print (default: 5) |
|
|
203
|
+
| `--limit <n>` | `handoff list` | Max handoffs to print (default: 5) |
|
|
204
|
+
| `--limit <n>` | `plan list` | Max plans to print (default: 5) |
|
|
205
|
+
| `--head` | `handoff list` | Print only the newest *usable* handoff path — skips empty/unreadable files, same pick as `handoff peek` |
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
### Plan flags
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
| Flag | Commands | Description |
|
|
214
|
+
| ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
215
|
+
| `--title <name>` | `plan` | Filename stem when creating/updating by name (trailing `.md` ok; sanitized, max 80 chars; no auto-slug). Mutually exclusive with `--path`. |
|
|
216
|
+
| `--path <file>` | `plan` | Update an existing plan by path (must resolve under this project's `plans/`; no title sanitization; always overwrites). Mutually exclusive with `--title`. |
|
|
217
|
+
| `--force` | `plan` | With `--title`: overwrite an existing plan (preserves original `created`, sets `updated`). Not used with `--path`. |
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
Unlike `note` / `handoff` (always a new dated file), `plan` is living: create or collide by `--title` (use `--force` to overwrite), or update an existing file in place with `--path`.
|
|
135
221
|
|
|
136
222
|
### Doctor flags
|
|
137
223
|
|
|
138
|
-
|
|
139
|
-
|
|
|
224
|
+
|
|
225
|
+
| Flag | Description |
|
|
226
|
+
| ---------- | ---------------------------------------------- |
|
|
140
227
|
| `--global` | Machine-only checks (skip project/link checks) |
|
|
141
228
|
|
|
229
|
+
|
|
142
230
|
Run `grounder --help` for the full reference.
|
|
143
231
|
|
|
144
232
|
### Status vs doctor
|
|
145
233
|
|
|
146
|
-
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
| `grounder
|
|
234
|
+
|
|
235
|
+
| Command | Job | When to use |
|
|
236
|
+
| ----------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
237
|
+
| `grounder status` | Snapshot of Machine (home config + vault path) and Project (link, id, notes/logs/plans, git) | “Am I wired?” — see paths and link state |
|
|
238
|
+
| `grounder doctor` | Health checklist (`ok` / `fail` / `warn`) with fix hints; exit `1` on any fail | “Why isn’t memory working?” — verify setup |
|
|
239
|
+
|
|
150
240
|
|
|
151
241
|
Both are read-only. `status` exits `0` even when unlinked; `doctor` fails when checks fail. Use `doctor --global` to check the machine without a project link.
|
|
152
242
|
|
|
243
|
+
`status` only reads the install ledger (`Schemas: current` / `Schemas: ledger stale` — it does not open agent command/hook files). `doctor` checks on-disk drift via migrate dry-run, and also warns when files already match but the ledger schema is still behind, so both point at `grounder migrate` in that case.
|
|
244
|
+
|
|
153
245
|
## Configuration
|
|
154
246
|
|
|
155
247
|
**Machine config** — `~/.grounder/config.json`:
|
|
@@ -168,23 +260,29 @@ Written by `grounder vault init`. Holds the vault path for this machine only.
|
|
|
168
260
|
|
|
169
261
|
Written by `grounder init` in the **current working directory**. Project id detection (when `--id` is omitted): `package.json` name in that folder → git `origin` remote (if inside a git repo) → folder basename.
|
|
170
262
|
|
|
171
|
-
`grounder note`, `grounder handoff`, and `grounder path *` walk up from the current directory to find the nearest `.grounder.json`, stopping at the git root when one exists (or at the filesystem root otherwise).
|
|
263
|
+
`grounder note`, `grounder handoff`, `grounder plan`, and `grounder path *` walk up from the current directory to find the nearest `.grounder.json`, stopping at the git root when one exists (or at the filesystem root otherwise).
|
|
172
264
|
|
|
173
265
|
**Environment variables**
|
|
174
266
|
|
|
175
|
-
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
| `
|
|
267
|
+
|
|
268
|
+
| Variable | Description |
|
|
269
|
+
| ---------------- | ------------------------------------------------------------ |
|
|
270
|
+
| `GROUNDER_VAULT` | Override vault root for the current session |
|
|
271
|
+
| `GROUNDER_HOME` | Override home directory (default: `~`) for config resolution |
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
179
275
|
|
|
180
276
|
## Agents
|
|
181
277
|
|
|
182
278
|
The vault layout is agent-agnostic. `grounder vault init` installs thin glue artifacts per detected agent via a pluggable adapter registry (`src/agents/`).
|
|
183
279
|
|
|
184
|
-
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
280
|
+
|
|
281
|
+
| Agent | Detection | Artifacts |
|
|
282
|
+
| ----------- | ------------------ | -------------------------------------------------------------- |
|
|
283
|
+
| Cursor | `~/.cursor` exists | `~/.cursor/commands/grounder-{note,task,task-handoff,plan}.md` |
|
|
284
|
+
| Claude Code | `~/.claude` exists | `~/.claude/commands/grounder-{note,task,task-handoff,plan}.md` |
|
|
285
|
+
|
|
188
286
|
|
|
189
287
|
No `--agent` flag: auto-detect installed agents. Explicit install:
|
|
190
288
|
|
|
@@ -192,7 +290,9 @@ No `--agent` flag: auto-detect installed agents. Explicit install:
|
|
|
192
290
|
grounder vault init <path-to-your-vault> --agent=cursor --agent=claude
|
|
193
291
|
```
|
|
194
292
|
|
|
195
|
-
Slash commands
|
|
293
|
+
Slash commands invoke `~/.grounder/runtime/dist/cli.js` directly (not `npx`) — see [Session-start hooks](#session-start-hooks) for how that runtime stays current. Command files that still match what Grounder last wrote are refreshed by `grounder migrate` without `--force`. Locally edited files are left alone unless you pass `--force`.
|
|
294
|
+
|
|
295
|
+
After upgrading the package, see [Upgrading](#upgrading). `vault init --force` still works for scripts that already use it; it shares the same install path as `migrate`.
|
|
196
296
|
|
|
197
297
|
Templates live under `templates/agents/{id}/`. Adding another agent means one adapter file + one template directory — `vault init` stays agent-blind.
|
|
198
298
|
|
|
@@ -216,28 +316,41 @@ What hooks do **not** do:
|
|
|
216
316
|
- They never block or delay a session from starting
|
|
217
317
|
- Unlinked folders and projects with no handoffs print nothing (exit 0, silent)
|
|
218
318
|
|
|
219
|
-
`doctor` reports a `warn` (never a `fail`) when a detected agent has no Grounder hook installed, and when
|
|
319
|
+
`doctor` reports a `warn` (never a `fail`) when a detected agent has no Grounder hook installed, and when `~/.grounder/runtime` is stale or missing.
|
|
220
320
|
|
|
221
|
-
Hooks run `~/.grounder/runtime/dist/cli.js` directly (
|
|
321
|
+
Hooks *and* slash commands both run `~/.grounder/runtime/dist/cli.js` directly (never `npx`) — `vault init` materializes it, regardless of whether `--hooks` is passed:
|
|
222
322
|
|
|
223
|
-
- **Real install** (`npm i -g grounder`, `pnpm add -g grounder`, or a monorepo checkout) → symlinked. Upgrading overwrites the same path in place, so
|
|
224
|
-
- **Bare `npx grounder vault init
|
|
323
|
+
- **Real install** (`npm i -g grounder`, `pnpm add -g grounder`, or a monorepo checkout) → symlinked. Upgrading overwrites the same path in place, so both stay current with **no re-run needed**.
|
|
324
|
+
- **Bare** `npx grounder vault init …` (nothing installed) → copied, since each `npx` invocation resolves to a disposable, version-pinned cache dir that can't be symlinked durably. Re-run `grounder migrate` (or `vault init`) after upgrading grounder to refresh (no `--force` needed).
|
|
225
325
|
|
|
226
|
-
If you want
|
|
326
|
+
If you want the runtime to stay current with zero maintenance, install grounder rather than using bare `npx` for this step.
|
|
327
|
+
|
|
328
|
+
That refresh only touches the shared runtime, not installed command files — see [Upgrading](#upgrading) if `doctor` flags command drift.
|
|
227
329
|
|
|
228
330
|
## Troubleshooting
|
|
229
331
|
|
|
230
|
-
|
|
231
|
-
|
|
|
232
|
-
|
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
|
239
|
-
| Session-start teaser
|
|
332
|
+
|
|
333
|
+
| Symptom | Try |
|
|
334
|
+
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
335
|
+
| Not sure if this folder is linked | `grounder status` — check Project `Linked:` and paths |
|
|
336
|
+
| Notes / handoffs / plans fail or slash commands missing | `grounder doctor` — follow fix hints |
|
|
337
|
+
| Machine setup only (no project yet) | `grounder doctor --global` |
|
|
338
|
+
| Home config / vault missing | `grounder vault init <path>` |
|
|
339
|
+
| No `.grounder.json` / notes / logs / plans dirs | `grounder init` |
|
|
340
|
+
| Agent slash commands drifted (`doctor` warns) | Follow the hint: plain `grounder migrate` when files would auto-update; `grounder migrate --force` when locally modified (also typical once when upgrading from before 0.3) |
|
|
341
|
+
| Session-start teaser missing (optional) | `grounder migrate --hooks` — `doctor` warns when absent |
|
|
342
|
+
| Shared runtime stale after upgrade (bare npx install) | `grounder migrate` — `doctor` warns when `hook-runtime` is stale |
|
|
343
|
+
| Migrate skips all commands as locally modified (first run after upgrade) | `grounder migrate --force` once, then plain `migrate` on later upgrades |
|
|
344
|
+
| Node binary gone / not executable (`doctor` fails on hook or command interpreter path) | `grounder migrate` (add `--force` if command files were edited or you’re still on a pre-0.3 install) |
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
## Roadmap
|
|
350
|
+
|
|
351
|
+
- **Support for Copilot, Codex, and other popular agents** — expand beyond Cursor and Claude Code so more agent tools can use the same vault memory.
|
|
352
|
+
- **Auto-draft handoff on session end** (under consideration) — a hook that has the agent write the same structured Done/Next/Blockers checkpoint automatically, instead of requiring `/grounder-task-handoff`.
|
|
240
353
|
|
|
241
354
|
## Development
|
|
242
355
|
|
|
243
|
-
Source, tests, and contribution workflow live in the [Grounder monorepo](https://github.com/andrej-kolic/grounder).
|
|
356
|
+
Source, tests, and contribution workflow live in the [Grounder monorepo](https://github.com/andrej-kolic/grounder).
|
package/dist/agents/claude.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare function claudeCommandsDir(homeDir?: string): string;
|
|
|
13
13
|
/** Absolute path to Claude Code's shared settings file (`~/.claude/settings.json`). */
|
|
14
14
|
export declare function claudeSettingsJsonPath(homeDir?: string): string;
|
|
15
15
|
export declare function grounderNoteCommandPath(homeDir?: string): string;
|
|
16
|
+
export declare function grounderPlanCommandPath(homeDir?: string): string;
|
|
16
17
|
export declare function grounderTaskHandoffCommandPath(homeDir?: string): string;
|
|
17
18
|
export declare function grounderTaskCommandPath(homeDir?: string): string;
|
|
18
19
|
export declare function expectedArtifacts(homeDir?: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,YAAY,CAAC;AAYpB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,8BAA8B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhE;AA+ND,eAAO,MAAM,MAAM,EAAE,YAwCpB,CAAC"}
|
package/dist/agents/claude.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { resolveHomeDir } from "../connector/home.js";
|
|
5
5
|
import { fileExists } from "../util/fs.js";
|
|
6
6
|
import { mergeJsonFile } from "../util/merge-json.js";
|
|
7
7
|
import { installHookRuntime, isGrounderPeekHookCommand, isHookRuntimeStale, peekHookCommand, } from "./hook-runtime.js";
|
|
8
|
+
import { installCommandFile, recordCommandFileHashes } from "./install-command.js";
|
|
8
9
|
const pkgRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
|
|
9
10
|
const templateDir = path.join(pkgRoot, "templates", "agents", "claude", "commands");
|
|
10
|
-
const COMMANDS = [
|
|
11
|
+
const COMMANDS = [
|
|
12
|
+
"grounder-note.md",
|
|
13
|
+
"grounder-plan.md",
|
|
14
|
+
"grounder-task-handoff.md",
|
|
15
|
+
"grounder-task.md",
|
|
16
|
+
];
|
|
11
17
|
/**
|
|
12
18
|
* Canonical SessionStart command for Claude Code (home-local runtime, not `npx`).
|
|
13
19
|
* @see {@link peekHookCommand} — REVERT: restore `"npx grounder handoff peek"` and drop runtime.
|
|
@@ -30,6 +36,9 @@ export function claudeSettingsJsonPath(homeDir) {
|
|
|
30
36
|
export function grounderNoteCommandPath(homeDir) {
|
|
31
37
|
return path.join(claudeCommandsDir(homeDir), "grounder-note.md");
|
|
32
38
|
}
|
|
39
|
+
export function grounderPlanCommandPath(homeDir) {
|
|
40
|
+
return path.join(claudeCommandsDir(homeDir), "grounder-plan.md");
|
|
41
|
+
}
|
|
33
42
|
export function grounderTaskHandoffCommandPath(homeDir) {
|
|
34
43
|
return path.join(claudeCommandsDir(homeDir), "grounder-task-handoff.md");
|
|
35
44
|
}
|
|
@@ -43,16 +52,6 @@ export function expectedArtifacts(homeDir) {
|
|
|
43
52
|
export function expectedHookArtifacts(homeDir) {
|
|
44
53
|
return [claudeSettingsJsonPath(homeDir)];
|
|
45
54
|
}
|
|
46
|
-
async function installCommand(filename, opts) {
|
|
47
|
-
const dest = path.join(claudeCommandsDir(opts.homeDir), filename);
|
|
48
|
-
const existed = await fileExists(dest);
|
|
49
|
-
if (existed && !opts.force) {
|
|
50
|
-
return { dest, status: "skipped" };
|
|
51
|
-
}
|
|
52
|
-
await mkdir(path.dirname(dest), { recursive: true });
|
|
53
|
-
await copyFile(path.join(templateDir, filename), dest);
|
|
54
|
-
return { dest, status: existed ? "overwritten" : "created" };
|
|
55
|
-
}
|
|
56
55
|
// ---------------------------------------------------------------------------
|
|
57
56
|
// Session-start hook install (~/.claude/settings.json)
|
|
58
57
|
//
|
|
@@ -239,6 +238,12 @@ async function installHooks(opts) {
|
|
|
239
238
|
if (upToDate && !opts.force) {
|
|
240
239
|
return { artifacts: { [dest]: "skipped" } };
|
|
241
240
|
}
|
|
241
|
+
if (opts.dryRun) {
|
|
242
|
+
const fileExisted = await fileExists(dest);
|
|
243
|
+
const hadGrounderEntry = fileExisted && (await peekHookHadGrounderEntry(dest));
|
|
244
|
+
const status = hadGrounderEntry ? "overwritten" : "created";
|
|
245
|
+
return { artifacts: { [dest]: status } };
|
|
246
|
+
}
|
|
242
247
|
await installHookRuntime({ homeDir: opts.homeDir });
|
|
243
248
|
const fileExisted = await fileExists(dest);
|
|
244
249
|
const hadGrounderEntry = fileExisted && (await peekHookHadGrounderEntry(dest));
|
|
@@ -252,6 +257,8 @@ async function installHooks(opts) {
|
|
|
252
257
|
export const claude = {
|
|
253
258
|
id: "claude",
|
|
254
259
|
name: "Claude Code",
|
|
260
|
+
commandsSchema: 2,
|
|
261
|
+
hooksSchema: 1,
|
|
255
262
|
async isInstalled() {
|
|
256
263
|
return fileExists(path.join(resolveHomeDir(), ".claude"));
|
|
257
264
|
},
|
|
@@ -259,10 +266,27 @@ export const claude = {
|
|
|
259
266
|
expectedHookArtifacts,
|
|
260
267
|
async install(opts) {
|
|
261
268
|
const artifacts = {};
|
|
269
|
+
const files = {};
|
|
262
270
|
for (const filename of COMMANDS) {
|
|
263
|
-
const { dest, status } = await
|
|
271
|
+
const { dest, status, hash } = await installCommandFile({
|
|
272
|
+
...opts,
|
|
273
|
+
agentId: claude.id,
|
|
274
|
+
templateDir,
|
|
275
|
+
commandsDir: claudeCommandsDir(opts.homeDir),
|
|
276
|
+
filename,
|
|
277
|
+
});
|
|
264
278
|
artifacts[dest] = status;
|
|
279
|
+
if (hash) {
|
|
280
|
+
files[dest] = { hash };
|
|
281
|
+
}
|
|
265
282
|
}
|
|
283
|
+
await recordCommandFileHashes({
|
|
284
|
+
agentId: claude.id,
|
|
285
|
+
commandsSchema: claude.commandsSchema,
|
|
286
|
+
files,
|
|
287
|
+
homeDir: opts.homeDir,
|
|
288
|
+
dryRun: opts.dryRun,
|
|
289
|
+
});
|
|
266
290
|
return { artifacts };
|
|
267
291
|
},
|
|
268
292
|
installHooks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/cursor.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare function cursorCommandsDir(homeDir?: string): string;
|
|
|
9
9
|
/** Absolute path to Cursor's shared hooks config (`~/.cursor/hooks.json`). */
|
|
10
10
|
export declare function cursorHooksJsonPath(homeDir?: string): string;
|
|
11
11
|
export declare function grounderNoteCommandPath(homeDir?: string): string;
|
|
12
|
+
export declare function grounderPlanCommandPath(homeDir?: string): string;
|
|
12
13
|
export declare function grounderTaskHandoffCommandPath(homeDir?: string): string;
|
|
13
14
|
export declare function grounderTaskCommandPath(homeDir?: string): string;
|
|
14
15
|
export declare function expectedArtifacts(homeDir?: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/agents/cursor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/agents/cursor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,YAAY,CAAC;AAYpB;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,GAAE,SAAS,MAAM,EAAe,GACxC,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,8BAA8B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhE;AAkLD,eAAO,MAAM,MAAM,EAAE,YAwCpB,CAAC"}
|