@neurodock/cli 0.2.0 → 0.6.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/CHANGELOG.md +198 -1
- package/README.md +155 -27
- package/dist/assets/hooks/neurodock_daemon.py +506 -0
- package/dist/assets/hooks/proactive_guardrail.py +520 -0
- package/dist/clients/claude-code.d.ts.map +1 -1
- package/dist/clients/claude-code.js +3 -1
- package/dist/clients/claude-code.js.map +1 -1
- package/dist/clients/claude-desktop.d.ts.map +1 -1
- package/dist/clients/claude-desktop.js +3 -1
- package/dist/clients/claude-desktop.js.map +1 -1
- package/dist/clients/cursor.d.ts.map +1 -1
- package/dist/clients/cursor.js +3 -1
- package/dist/clients/cursor.js.map +1 -1
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +59 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/examples.d.ts +28 -0
- package/dist/commands/examples.d.ts.map +1 -0
- package/dist/commands/examples.js +168 -0
- package/dist/commands/examples.js.map +1 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +1 -1
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +14 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-all.d.ts +78 -0
- package/dist/commands/install-all.d.ts.map +1 -0
- package/dist/commands/install-all.js +283 -0
- package/dist/commands/install-all.js.map +1 -0
- package/dist/commands/install-hooks.d.ts +20 -0
- package/dist/commands/install-hooks.d.ts.map +1 -0
- package/dist/commands/install-hooks.js +356 -0
- package/dist/commands/install-hooks.js.map +1 -0
- package/dist/commands/plugin.d.ts +122 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +545 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +11 -2
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/sync.d.ts +24 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +179 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +11 -3
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +13 -22
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +11 -172
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +12 -3
- package/dist/commands/validate.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/json-patch.d.ts.map +1 -1
- package/dist/lib/json-patch.js +1 -1
- package/dist/lib/json-patch.js.map +1 -1
- package/dist/lib/mcp-entries.d.ts.map +1 -1
- package/dist/lib/mcp-entries.js +25 -3
- package/dist/lib/mcp-entries.js.map +1 -1
- package/dist/lib/paths.d.ts +10 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +19 -2
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/plugin-schema.d.ts +12 -0
- package/dist/lib/plugin-schema.d.ts.map +1 -0
- package/dist/lib/plugin-schema.js +71 -0
- package/dist/lib/plugin-schema.js.map +1 -0
- package/dist/profile/defaults.d.ts.map +1 -1
- package/dist/profile/defaults.js +3 -1
- package/dist/profile/defaults.js.map +1 -1
- package/dist/profile/loader.d.ts.map +1 -1
- package/dist/profile/loader.js +3 -1
- package/dist/profile/loader.js.map +1 -1
- package/dist/profile/validator.d.ts.map +1 -1
- package/dist/profile/validator.js +5 -1
- package/dist/profile/validator.js.map +1 -1
- package/package.json +31 -14
- package/LICENSE +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,203 @@
|
|
|
1
1
|
# @neurodock/cli changelog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.6.0
|
|
4
|
+
|
|
5
|
+
### Added — `neurodock install-hooks` (proactive guardrails Phases 1 + 3)
|
|
6
|
+
|
|
7
|
+
One command wires NeuroDock's proactive-guardrail layer into a fresh
|
|
8
|
+
install. Bundled self-contained Python scripts ship with the npm
|
|
9
|
+
package — no extra `pip install` step.
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
neurodock install-hooks --self-test
|
|
13
|
+
neurodock install-hooks --install-daemon --self-test
|
|
14
|
+
neurodock install-hooks --uninstall
|
|
15
|
+
neurodock install-hooks --dry-run
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The command:
|
|
19
|
+
|
|
20
|
+
1. Copies `proactive_guardrail.py` to `~/.neurodock/hooks/` (Phase 1
|
|
21
|
+
Claude Code hook; auto-fires chronometric / rumination /
|
|
22
|
+
sycophancy checks on every Nth tool use, banners on stderr).
|
|
23
|
+
2. Copies `neurodock_daemon.py` to the same dir (Phase 3 host-agnostic
|
|
24
|
+
poller; same heuristics, native OS notifications).
|
|
25
|
+
3. Idempotently merges 4 entries into `~/.claude/settings.json`
|
|
26
|
+
(`SessionStart`, `PreToolUse`, `PostToolUse`, `Stop`), preserving
|
|
27
|
+
any existing hooks from other tools.
|
|
28
|
+
4. With `--install-daemon`, registers the daemon at user-login
|
|
29
|
+
autostart: HKCU Run on Windows, LaunchAgent on macOS, systemd
|
|
30
|
+
`--user` unit on Linux.
|
|
31
|
+
5. With `--self-test`, runs both scripts' built-in smoke test to
|
|
32
|
+
verify Python is on PATH and the heuristics fire.
|
|
33
|
+
|
|
34
|
+
**Opt-out:**
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
neurodock install-hooks --uninstall # removes hook + daemon entries
|
|
38
|
+
export NEURODOCK_GUARDRAILS=off # disables without removing
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Fixed — Windows path-escape lockout (regression-pinned)
|
|
42
|
+
|
|
43
|
+
Pre-0.6.0 the hook command written into `settings.json` used
|
|
44
|
+
backslashes on Windows. Bash-style shells (Git Bash / MinGW — what
|
|
45
|
+
Claude Code uses for hooks on Windows) interpret `\U`, `\h`, `\p`
|
|
46
|
+
etc. as escape sequences and strip them, mangling the path to
|
|
47
|
+
`pythonscript.py` and causing every PreToolUse hook to fail, which
|
|
48
|
+
**blocks every tool call** until the user manually edits
|
|
49
|
+
`settings.json`. The 0.0.22 install command hit this. Twice.
|
|
50
|
+
|
|
51
|
+
0.6.0 always normalises the script path to forward slashes (Python
|
|
52
|
+
accepts them on Windows) and always wraps it in double quotes. The
|
|
53
|
+
new install summary also echoes the exact hook command string so the
|
|
54
|
+
bug class can't recur silently.
|
|
55
|
+
|
|
56
|
+
Regression test: `packages/cli/tests/install-hooks.test.ts` pins the
|
|
57
|
+
contract — the test fails if any hook entry contains a backslash in
|
|
58
|
+
its script-path portion.
|
|
59
|
+
|
|
60
|
+
### Internals
|
|
61
|
+
|
|
62
|
+
- New build step `scripts/copy-assets.mjs` copies `src/assets/` into
|
|
63
|
+
`dist/assets/` after `tsc`, so the published npm tarball contains
|
|
64
|
+
the bundled Python scripts.
|
|
65
|
+
- `package.json` `files` array already includes `dist/`, so no
|
|
66
|
+
manifest change needed.
|
|
67
|
+
|
|
68
|
+
## 0.5.0
|
|
69
|
+
|
|
70
|
+
### Changed (breaking)
|
|
71
|
+
|
|
72
|
+
- `neurodock update` now upgrades NeuroDock to the latest version
|
|
73
|
+
(re-installs the six MCP servers via `pip install --upgrade` or
|
|
74
|
+
`uv tool install` and re-wires clients). Previously, `update` only
|
|
75
|
+
re-shaped client config JSON without touching package versions —
|
|
76
|
+
which confused users who expected `update` to behave like every
|
|
77
|
+
other CLI's `update` verb.
|
|
78
|
+
- The previous behavior moved to a new verb: `neurodock sync`. Same
|
|
79
|
+
flags (`--client`, `--dry-run`), same code path, same semantics.
|
|
80
|
+
- The new `update` command accepts the same flags as `install-all`
|
|
81
|
+
(`--client`, `--profile`, `--installer`, `--skip-install`, `--yes`,
|
|
82
|
+
`--dry-run`, `--no-native-host`).
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
|
|
86
|
+
- README now has a dedicated `## Update` section documenting the
|
|
87
|
+
one-liner: `npx --yes @neurodock/cli update`.
|
|
88
|
+
|
|
89
|
+
### Migration
|
|
90
|
+
|
|
91
|
+
If you scripted against `neurodock update --client X --dry-run` to
|
|
92
|
+
reconcile client configs, rename the call to `neurodock sync` — the
|
|
93
|
+
old flags still work there. If you wanted package upgrades, the new
|
|
94
|
+
`neurodock update` is what you were looking for.
|
|
95
|
+
|
|
96
|
+
## 0.4.3
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
|
|
100
|
+
- `homepage` in `package.json` now points at https://neurodock.org/
|
|
101
|
+
(was the GitHub README anchor). Repository link unchanged. Adds
|
|
102
|
+
`bugs`, `keywords`, and richer `description` for the npm listing.
|
|
103
|
+
- README rewritten to lead with the new slogan ("A cognitive substrate
|
|
104
|
+
that remembers, paces, and refuses"), reference NeuroDock by brand
|
|
105
|
+
rather than as an internal monorepo, and add a Links section with
|
|
106
|
+
the canonical home / docs / repo / issues / changelog URLs.
|
|
107
|
+
|
|
108
|
+
No behaviour change. Same surface as 0.4.2.
|
|
109
|
+
|
|
110
|
+
## 0.4.2
|
|
111
|
+
|
|
112
|
+
### Fixed
|
|
113
|
+
|
|
114
|
+
- `neurodock init` now wires all FIVE MCP servers into the MCP-aware
|
|
115
|
+
client config, not just three. Previously chronometric +
|
|
116
|
+
cognitive-graph + task-fractionator got registered but translation
|
|
117
|
+
- guardrail were skipped — so users saw 3/5 servers in Claude even
|
|
118
|
+
after a clean `install-all` + restart. The pip install registered
|
|
119
|
+
the entrypoints; the CLI just wasn't pointing the client at them.
|
|
120
|
+
`mcp-entries.ts` `NEURODOCK_SERVERS` list extended with the missing
|
|
121
|
+
two. `examples` and `install-all` already iterated all five, so no
|
|
122
|
+
changes there.
|
|
123
|
+
|
|
124
|
+
## 0.4.1
|
|
125
|
+
|
|
126
|
+
### Changed
|
|
127
|
+
|
|
128
|
+
- `neurodock install-all` now also registers the optional native-messaging
|
|
129
|
+
host at the end of the run (previously a separate `neurodock host install`
|
|
130
|
+
step). Brings first-time install to truly one command: pip-install the
|
|
131
|
+
six MCP servers, wire the MCP-aware clients, and register the host the
|
|
132
|
+
browser extension uses to read `~/.neurodock/profile.yaml`.
|
|
133
|
+
- New `--no-native-host` flag on `install-all` for users who don't want the
|
|
134
|
+
browser-extension bridge wired (e.g. headless / server installs).
|
|
135
|
+
- Host-install failure is non-fatal: the whole command stays exit 0, prints
|
|
136
|
+
a `[warn]` line, and tells the user they can re-run `neurodock host install`
|
|
137
|
+
later. Rationale: the host is only useful if the user also installs the
|
|
138
|
+
browser extension, so failing the entire first-time install over it is
|
|
139
|
+
worse UX than warning.
|
|
140
|
+
- Added a "What this just did" three-bullet recap at the end of `install-all`
|
|
141
|
+
so the user can see what was wired without re-reading the full log.
|
|
142
|
+
- New tests in `tests/install-all.test.ts`: happy-path host install,
|
|
143
|
+
`--no-native-host` skip, host-failure warn-but-don't-fail.
|
|
144
|
+
|
|
145
|
+
## 0.4.0
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
|
|
149
|
+
- `neurodock plugin` command group for managing plugins under
|
|
150
|
+
`~/.neurodock/plugins/` per ADR 0007. Six subcommands:
|
|
151
|
+
- `plugin add <source>` — install a plugin from a local directory.
|
|
152
|
+
Validates `plugin.yaml` against `plugin.schema.json` before copying
|
|
153
|
+
into `~/.neurodock/plugins/<name>/`. Flags: `--yes`, `--dry-run`,
|
|
154
|
+
`--force`. Exit codes: 0 ok, 1 source invalid, 2 already-installed
|
|
155
|
+
without `--force`, 3 schema validation failure.
|
|
156
|
+
- `plugin remove <name>` (alias: `uninstall`) — remove an installed
|
|
157
|
+
plugin. Flags: `--yes`, `--dry-run`.
|
|
158
|
+
- `plugin list` — list installed plugins with their enabled state.
|
|
159
|
+
`--json` for machine-readable output.
|
|
160
|
+
- `plugin enable <name>` — activate an installed plugin by writing a
|
|
161
|
+
`.enabled` marker file into the plugin directory. The substrate's
|
|
162
|
+
filesystem walk (per ADR 0007) treats marker presence as the
|
|
163
|
+
single source of truth for activation; no central registry file
|
|
164
|
+
is maintained.
|
|
165
|
+
- `plugin disable <name>` — remove the `.enabled` marker without
|
|
166
|
+
deleting the plugin files.
|
|
167
|
+
- `plugin validate <source>` — schema-validate a plugin manifest
|
|
168
|
+
without installing. `--json` flag for scripting. Exit codes: 0
|
|
169
|
+
valid, 1 invalid, 2 `plugin.yaml` missing.
|
|
170
|
+
- New tests: `tests/plugin-add.test.ts`, `tests/plugin-remove.test.ts`,
|
|
171
|
+
`tests/plugin-list.test.ts`, `tests/plugin-enable.test.ts`,
|
|
172
|
+
`tests/plugin-disable.test.ts`, `tests/plugin-validate.test.ts`.
|
|
173
|
+
- `pluginsDir(env)` helper in `lib/paths.ts` resolves to
|
|
174
|
+
`<profileDir>/plugins/` so tests that set `NEURODOCK_PROFILE_PATH`
|
|
175
|
+
get an isolated plugin tree for free.
|
|
176
|
+
|
|
177
|
+
## 0.3.0
|
|
178
|
+
|
|
179
|
+
### Added
|
|
180
|
+
|
|
181
|
+
- `neurodock install-all` — single-command first-time install. Detects
|
|
182
|
+
whether `uv` is on PATH (preferred) and falls back to `python -m pip`,
|
|
183
|
+
then installs the six Python MCP servers (`neurodock-mcp-chronometric`,
|
|
184
|
+
`neurodock-mcp-cognitive-graph`, `neurodock-mcp-task-fractionator`,
|
|
185
|
+
`neurodock-mcp-translation`, `neurodock-mcp-guardrail`,
|
|
186
|
+
`neurodock-evals`), verifies each entrypoint is on PATH with
|
|
187
|
+
`<command> --help`, and runs `neurodock init` to wire MCP clients —
|
|
188
|
+
collapsing six `pip install` lines plus an `init` into one command.
|
|
189
|
+
Flags: `--client`, `--profile`, `--installer <uv|pip|auto>`,
|
|
190
|
+
`--skip-install`, `--yes`, `--dry-run`. Exit codes: 0 on success,
|
|
191
|
+
1 if any entrypoint is missing from PATH, 2 if init fails.
|
|
192
|
+
- `neurodock examples` — copy-pasteable prompt cheat-sheet that exercises
|
|
193
|
+
every wired NeuroDock MCP tool. Detects which servers are wired across
|
|
194
|
+
all detected client configs and prints 2–3 example prompts per server,
|
|
195
|
+
each annotated with the underlying tool name. Flags: `--server <name>`
|
|
196
|
+
to filter, `--json` for scripting. Honors `NO_COLOR` / `FORCE_COLOR`
|
|
197
|
+
via the existing `colorEnabled()` helper.
|
|
198
|
+
- New tests: `tests/install-all.test.ts`, `tests/examples.test.ts`.
|
|
199
|
+
|
|
200
|
+
## 0.2.0
|
|
4
201
|
|
|
5
202
|
### Added
|
|
6
203
|
|
package/README.md
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
# @neurodock/cli
|
|
2
2
|
|
|
3
|
-
The `neurodock` installer and diagnostic CLI.
|
|
3
|
+
The `neurodock` installer and diagnostic CLI for [NeuroDock](https://neurodock.org/) — a local-first cognitive substrate for neurodivergent professionals.
|
|
4
4
|
|
|
5
|
-
Status:
|
|
5
|
+
Status: **v0.6.0**.
|
|
6
6
|
|
|
7
7
|
## Quickstart
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
# From a published package
|
|
11
|
-
npx neurodock
|
|
10
|
+
# From a published package:
|
|
11
|
+
npx --yes @neurodock/cli@latest install-all
|
|
12
|
+
|
|
13
|
+
# Or step-by-step, also from npm:
|
|
14
|
+
npx --yes @neurodock/cli@latest init
|
|
12
15
|
|
|
13
16
|
# From a fresh clone of the monorepo:
|
|
14
17
|
pnpm install
|
|
@@ -16,24 +19,56 @@ pnpm --filter @neurodock/cli build
|
|
|
16
19
|
node packages/cli/dist/index.js init
|
|
17
20
|
```
|
|
18
21
|
|
|
19
|
-
`neurodock init` wires
|
|
20
|
-
task-fractionator) into every
|
|
22
|
+
`neurodock init` wires five Python MCP servers (chronometric,
|
|
23
|
+
cognitive-graph, task-fractionator, translation, guardrail) into every
|
|
24
|
+
MCP-aware client it can detect. A sixth, the optional native messaging
|
|
25
|
+
host, is wired separately via `neurodock host install`.
|
|
21
26
|
|
|
22
|
-
**Prerequisite:** the CLI does not install Python deps for you
|
|
23
|
-
run `uv sync` (or
|
|
24
|
-
`
|
|
25
|
-
|
|
27
|
+
**Prerequisite:** the CLI does not install Python deps for you unless you
|
|
28
|
+
use `install-all`. From a clone run `uv sync` (or
|
|
29
|
+
`pip install -e packages/mcp-chronometric` etc.) so the
|
|
30
|
+
`neurodock-mcp-*` console entry points are on `$PATH`. From a published
|
|
31
|
+
install, `install-all` runs the `pip install` step automatically.
|
|
26
32
|
|
|
27
33
|
## Commands
|
|
28
34
|
|
|
29
|
-
| Command
|
|
30
|
-
|
|
31
|
-
| `neurodock
|
|
32
|
-
| `neurodock
|
|
33
|
-
| `neurodock
|
|
34
|
-
| `neurodock
|
|
35
|
-
| `neurodock
|
|
36
|
-
| `neurodock
|
|
35
|
+
| Command | What it does |
|
|
36
|
+
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
37
|
+
| `neurodock install-all` | One-command first-time install: pip-install the six servers, wire every detected client, copy the starter profile. |
|
|
38
|
+
| `neurodock init` | Install MCP servers into Claude Desktop / Claude Code / Cursor (the wiring half of `install-all`). |
|
|
39
|
+
| `neurodock doctor` | Diagnose your install — profile validity, client wiring, tool availability. |
|
|
40
|
+
| `neurodock validate` | Schema-validate a profile file (`~/.neurodock/profile.yaml` by default). |
|
|
41
|
+
| `neurodock update` | Upgrade NeuroDock to the latest version — re-installs the six MCP servers via pip/uv and re-wires client configs. |
|
|
42
|
+
| `neurodock sync` | Re-shape stale NeuroDock MCP entries in existing client configs. No package upgrade. Non-NeuroDock entries are preserved. |
|
|
43
|
+
| `neurodock uninstall` | Reverse `init` — remove NeuroDock MCP entries from each client config. Optionally purge `~/.neurodock/`. |
|
|
44
|
+
| `neurodock examples` | Print a copy-pasteable prompt cheat-sheet that exercises every wired NeuroDock MCP tool. |
|
|
45
|
+
| `neurodock host install` | Register the optional Chrome Native Messaging host so the browser extension can read `~/.neurodock/profile.yaml` directly. |
|
|
46
|
+
| `neurodock host uninstall` | Remove all NeuroDock native-host manifests and registry pointers. |
|
|
47
|
+
| `neurodock profile show` | Print the resolved profile with loader defaults applied. |
|
|
48
|
+
| `neurodock profile validate` | Validate `~/.neurodock/profile.yaml` against the v0.1 schema. |
|
|
49
|
+
| `neurodock plugin add` | Install a plugin from a local directory into `~/.neurodock/plugins/`. |
|
|
50
|
+
| `neurodock plugin remove` | Uninstall a plugin (alias: `plugin uninstall`). |
|
|
51
|
+
| `neurodock plugin list` | List installed plugins and their enabled state. `--json` for scripting. |
|
|
52
|
+
| `neurodock plugin enable` | Activate an installed plugin (writes a `.enabled` marker file). |
|
|
53
|
+
| `neurodock plugin disable` | Deactivate an installed plugin without deleting its files. |
|
|
54
|
+
| `neurodock plugin validate` | Schema-validate a plugin manifest without installing. |
|
|
55
|
+
|
|
56
|
+
### `neurodock install-all`
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
neurodock install-all [--client=claude-desktop|claude-code|cursor|all] \
|
|
60
|
+
[--profile=minimal|example] \
|
|
61
|
+
[--installer=uv|pip|auto] \
|
|
62
|
+
[--skip-install] [--yes] [--dry-run]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Single-command first-time install. Prefers `uv` if it is on PATH; falls
|
|
66
|
+
back to `python -m pip`. After install, verifies each server entrypoint
|
|
67
|
+
is on PATH with `<command> --help`, then delegates to `init` to wire
|
|
68
|
+
clients.
|
|
69
|
+
|
|
70
|
+
Exit codes: `0` ok, `1` an entrypoint is missing from PATH after
|
|
71
|
+
install, `2` init failed.
|
|
37
72
|
|
|
38
73
|
### `neurodock init`
|
|
39
74
|
|
|
@@ -52,21 +87,74 @@ What `init` does, in order:
|
|
|
52
87
|
|
|
53
88
|
1. Detects supported clients per platform (see "Detection locations" below).
|
|
54
89
|
2. Copies `profile.example.yaml` or `profile.minimal.yaml` to `~/.neurodock/profile.yaml` if it does not already exist. Sets `identity.display_name` from `$USER` / `%USERNAME%`.
|
|
55
|
-
3. Adds
|
|
90
|
+
3. Adds `mcpServers` entries for each NeuroDock server to each detected client's config.
|
|
56
91
|
4. Preserves all unrelated keys, comments, and unknown server entries already in those configs.
|
|
57
92
|
|
|
58
93
|
Idempotent. Re-running with no changes is a no-op. Collisions on a previous
|
|
59
94
|
key are skipped unless `--yes` is supplied.
|
|
60
95
|
|
|
96
|
+
### `neurodock update`
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
neurodock update [--client=claude-desktop|claude-code|cursor|all] \
|
|
100
|
+
[--profile=minimal|example] \
|
|
101
|
+
[--installer=uv|pip|auto] \
|
|
102
|
+
[--skip-install] [--yes] [--dry-run] [--no-native-host]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
One-command upgrade. Same code path as `install-all` — re-runs
|
|
106
|
+
`pip install --upgrade` (or `uv tool install`) for every NeuroDock MCP
|
|
107
|
+
server, re-wires the detected MCP clients, and re-registers the
|
|
108
|
+
optional native-messaging host. Exit codes match `install-all`:
|
|
109
|
+
`0` ok, `1` an entrypoint is missing from PATH, `2` init failed.
|
|
110
|
+
|
|
111
|
+
### `neurodock sync`
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
neurodock sync [--client <id>] [--dry-run]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Re-shape stale NeuroDock MCP entries in existing client configs
|
|
118
|
+
(version drift, command/args/cwd changes) without upgrading any
|
|
119
|
+
packages. Non-NeuroDock entries round-trip untouched. Useful when the
|
|
120
|
+
desired wiring shape changed but you don't need a package upgrade.
|
|
121
|
+
|
|
122
|
+
Before 0.5.0 this lived under `neurodock update`. The verb moved
|
|
123
|
+
because users typed `neurodock update` expecting a version upgrade.
|
|
124
|
+
|
|
125
|
+
### `neurodock validate` / `uninstall`
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
neurodock validate [--file <path>] [--strict]
|
|
129
|
+
neurodock uninstall [--client <id>] [--yes] [--purge] [--dry-run]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`validate` runs Ajv against `profile.schema.json` and reports field-path
|
|
133
|
+
violations. `uninstall` removes NeuroDock entries from every detected
|
|
134
|
+
client config; asks (interactively) whether to delete
|
|
135
|
+
`~/.neurodock/profile.yaml` and `~/.neurodock/cognitive-graph.sqlite`
|
|
136
|
+
(default: no). `--purge` deletes those without prompting.
|
|
137
|
+
|
|
138
|
+
### `neurodock examples`
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
neurodock examples [--server <name>] [--json]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Detects which NeuroDock servers are wired across all detected client
|
|
145
|
+
configs and prints 2–3 example prompts per server, each annotated with
|
|
146
|
+
the underlying tool name. `--server` filters to one server; `--json`
|
|
147
|
+
emits machine-readable output. Honors `NO_COLOR` / `FORCE_COLOR`.
|
|
148
|
+
|
|
61
149
|
### Detection locations
|
|
62
150
|
|
|
63
|
-
| Client
|
|
64
|
-
|
|
65
|
-
| Claude Desktop | macOS
|
|
66
|
-
| Claude Desktop | Windows
|
|
67
|
-
| Claude Desktop | Linux
|
|
68
|
-
| Claude Code
|
|
69
|
-
| Cursor
|
|
151
|
+
| Client | Platform | Path |
|
|
152
|
+
| -------------- | -------- | ------------------------------------------------------------------------------------ |
|
|
153
|
+
| Claude Desktop | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
154
|
+
| Claude Desktop | Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
155
|
+
| Claude Desktop | Linux | `~/.config/Claude/claude_desktop_config.json` |
|
|
156
|
+
| Claude Code | All | `./.claude/settings.json` (project, preferred) then `~/.claude/settings.json` (user) |
|
|
157
|
+
| Cursor | All | `./.cursor/mcp.json` (project, preferred) then `~/.cursor/mcp.json` (user) |
|
|
70
158
|
|
|
71
159
|
### `neurodock host install` / `uninstall`
|
|
72
160
|
|
|
@@ -88,6 +176,36 @@ is a placeholder.
|
|
|
88
176
|
The host is OPTIONAL. The extension keeps working without it — the
|
|
89
177
|
popup just shows `Profile sync: extension-local`.
|
|
90
178
|
|
|
179
|
+
### `neurodock profile show` / `validate`
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
neurodock profile show
|
|
183
|
+
neurodock profile validate [--file <path>]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
`show` prints the resolved profile with loader defaults applied (per
|
|
187
|
+
ADR 0004 §15). `validate` runs Ajv against the profile schema.
|
|
188
|
+
|
|
189
|
+
### `neurodock plugin` group
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
neurodock plugin add <source> [--yes] [--dry-run] [--force]
|
|
193
|
+
neurodock plugin remove <name> [--yes] [--dry-run]
|
|
194
|
+
neurodock plugin list [--json]
|
|
195
|
+
neurodock plugin enable <name>
|
|
196
|
+
neurodock plugin disable <name>
|
|
197
|
+
neurodock plugin validate <source> [--json]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
`add` validates `plugin.yaml` against `plugin.schema.json` before copying
|
|
201
|
+
into `~/.neurodock/plugins/<name>/`. Enablement is tracked via a
|
|
202
|
+
`.enabled` marker file inside each plugin directory — the substrate's
|
|
203
|
+
filesystem walk treats marker presence as the single source of truth
|
|
204
|
+
(per ADR 0007).
|
|
205
|
+
|
|
206
|
+
Exit codes for `add`: `0` ok, `1` source invalid, `2` already installed
|
|
207
|
+
without `--force`, `3` schema validation failure.
|
|
208
|
+
|
|
91
209
|
### Profile precedence
|
|
92
210
|
|
|
93
211
|
Loader precedence (highest first):
|
|
@@ -116,7 +234,17 @@ node dist/index.js --help
|
|
|
116
234
|
- All loader defaults live in `src/profile/defaults.ts` and mirror
|
|
117
235
|
`profile.schema.json` — JSON Schema validation does not apply defaults
|
|
118
236
|
itself, so the loader does.
|
|
119
|
-
- No telemetry, no remote calls
|
|
237
|
+
- No telemetry, no remote calls. `install-all` is the only command that
|
|
238
|
+
shells out to a package manager, and it does so only when invoked.
|
|
239
|
+
|
|
240
|
+
## Links
|
|
241
|
+
|
|
242
|
+
- **Home:** [neurodock.org](https://neurodock.org/)
|
|
243
|
+
- **Documentation:** [docs.neurodock.org](https://docs.neurodock.org/)
|
|
244
|
+
- **Repository:** [github.com/tlennon-ie/neurodock](https://github.com/tlennon-ie/neurodock) (monorepo; this package lives at `packages/cli/`)
|
|
245
|
+
- **Issues:** [github.com/tlennon-ie/neurodock/issues](https://github.com/tlennon-ie/neurodock/issues)
|
|
246
|
+
- **Changelog:** [`packages/cli/CHANGELOG.md`](https://github.com/tlennon-ie/neurodock/blob/main/packages/cli/CHANGELOG.md)
|
|
247
|
+
- **Manifesto + ethics:** [`MANIFESTO.md`](https://github.com/tlennon-ie/neurodock/blob/main/MANIFESTO.md), [`ETHICS.md`](https://github.com/tlennon-ie/neurodock/blob/main/ETHICS.md)
|
|
120
248
|
|
|
121
249
|
## License
|
|
122
250
|
|