@neurodock/cli 0.7.1 → 0.8.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 +38 -0
- package/dist/assets/hooks/neurodock_daemon.py +2 -0
- package/dist/assets/hooks/proactive_guardrail.py +2 -0
- package/dist/assets/hooks/test_daemon_escape.py +2 -0
- package/dist/assets/schemas/plugin.example.yaml +193 -0
- package/dist/assets/schemas/plugin.minimal.yaml +30 -0
- package/dist/assets/schemas/plugin.schema.json +391 -0
- package/dist/assets/schemas/profile.example.yaml +151 -0
- package/dist/assets/schemas/profile.minimal.yaml +34 -0
- package/dist/assets/schemas/profile.schema.json +211 -0
- package/dist/clients/claude-code.d.ts.map +1 -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.map +1 -1
- package/dist/clients/cursor.d.ts.map +1 -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 +4 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/examples.d.ts.map +1 -1
- package/dist/commands/examples.js +4 -0
- package/dist/commands/examples.js.map +1 -1
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +4 -0
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-all.d.ts.map +1 -1
- package/dist/commands/install-all.js +4 -0
- package/dist/commands/install-all.js.map +1 -1
- package/dist/commands/install-hooks.d.ts.map +1 -1
- package/dist/commands/install-hooks.js +4 -0
- package/dist/commands/install-hooks.js.map +1 -1
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +4 -0
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +4 -0
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/setup.d.ts +53 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +87 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +4 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +4 -0
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +4 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +4 -0
- package/dist/commands/validate.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/env.d.ts.map +1 -1
- package/dist/lib/env.js +4 -0
- package/dist/lib/env.js.map +1 -1
- package/dist/lib/json-patch.d.ts.map +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 +4 -0
- package/dist/lib/mcp-entries.js.map +1 -1
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +4 -0
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/plugin-schema.d.ts.map +1 -1
- package/dist/lib/plugin-schema.js +7 -0
- package/dist/lib/plugin-schema.js.map +1 -1
- package/dist/profile/defaults.d.ts.map +1 -1
- package/dist/profile/defaults.js +4 -0
- package/dist/profile/defaults.js.map +1 -1
- package/dist/profile/loader.d.ts.map +1 -1
- package/dist/profile/loader.js +4 -0
- package/dist/profile/loader.js.map +1 -1
- package/dist/profile/validator.d.ts.map +1 -1
- package/dist/profile/validator.js +7 -1
- package/dist/profile/validator.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @neurodock/cli changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.0 - 2026-06-11
|
|
4
|
+
|
|
5
|
+
### Added — `neurodock setup`: install-all + install-hooks in one command
|
|
6
|
+
|
|
7
|
+
The "turn on full NeuroDock" path the browser extension advertises is
|
|
8
|
+
now a single command. `neurodock setup` runs the existing `install-all`
|
|
9
|
+
runner (6 Python MCP servers, MCP client wiring, native-messaging host)
|
|
10
|
+
followed by the existing `install-hooks` runner (proactive-guardrail
|
|
11
|
+
hooks in `~/.claude/settings.json`) — a thin orchestrator, no duplicated
|
|
12
|
+
install logic. Mirrors `install-all`'s flags (`--client`, `--profile`,
|
|
13
|
+
`--installer`, `--skip-install`, `--yes`, `--dry-run`,
|
|
14
|
+
`--no-native-host`). The standalone Phase 3 daemon stays opt-in via
|
|
15
|
+
`--daemon`, matching `install-hooks --install-daemon`, because the
|
|
16
|
+
daemon is the optional piece — the Claude Code hook covers the common
|
|
17
|
+
cases and `setup` should not register login autostart by default. The
|
|
18
|
+
hooks step runs even when install-all reports a PATH problem (the
|
|
19
|
+
guardrails only need Python); the exit code preserves install-all's
|
|
20
|
+
failure first, else reports the hooks failure.
|
|
21
|
+
|
|
22
|
+
## 0.7.2
|
|
23
|
+
|
|
24
|
+
### Fixed — `npx @neurodock/cli install-all` failed on `init` with "Could not locate template: profile.example.yaml"
|
|
25
|
+
|
|
26
|
+
The 0.7.x tarball only shipped `dist/`, but `init`, `validate`, and
|
|
27
|
+
`plugin validate` all resolved their templates and JSON schemas through
|
|
28
|
+
relative paths into the workspace `packages/core/schemas/` folder. That
|
|
29
|
+
folder is not part of the cli tarball, so every fresh `npx` install
|
|
30
|
+
failed the moment `install-all` finished wiring the MCP servers and
|
|
31
|
+
tried to scaffold a profile.
|
|
32
|
+
|
|
33
|
+
Fix: `scripts/copy-assets.mjs` now also copies `packages/core/schemas/`
|
|
34
|
+
into `dist/assets/schemas/` at build time, and the three resolvers
|
|
35
|
+
(`commands/init.ts`, `profile/validator.ts`, `lib/plugin-schema.ts`)
|
|
36
|
+
check that bundled location first before falling back to the workspace
|
|
37
|
+
candidates used during local development. No behaviour change in the
|
|
38
|
+
monorepo; published tarball now contains the schemas required by every
|
|
39
|
+
first-run code path.
|
|
40
|
+
|
|
3
41
|
## 0.7.1
|
|
4
42
|
|
|
5
43
|
### Fixed — Windows: daemon autostart no longer flashes a black console window
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# WELCOME — THIS IS A WORKED EXAMPLE OF A PLUGIN MANIFEST
|
|
3
|
+
# ==============================================================================
|
|
4
|
+
# Plugins are how NeuroDock grows without us having to change the core. This
|
|
5
|
+
# file shows every field you can put in your own plugin's "plugin.yaml" file.
|
|
6
|
+
#
|
|
7
|
+
# You don't need to use every field. Most of them are optional. Copy this
|
|
8
|
+
# file as a starting point and delete anything you don't need.
|
|
9
|
+
#
|
|
10
|
+
# WHERE THE CONTRACT LIVES (for the curious):
|
|
11
|
+
# packages/core/schemas/plugin.schema.json — the machine-checkable rules
|
|
12
|
+
# docs/decisions/0007-plugin-protocol.md — the "why" behind the rules
|
|
13
|
+
#
|
|
14
|
+
# HOW PLUGINS GET FOUND:
|
|
15
|
+
# When NeuroDock starts, it looks in two places for plugins:
|
|
16
|
+
# 1. plugins/<your-plugin>/plugin.yaml (lives inside this repo)
|
|
17
|
+
# 2. ~/.local/share/neurodock/plugins/<your-plugin>/plugin.yaml
|
|
18
|
+
# (lives on your own computer, just for you)
|
|
19
|
+
# No central server. No sign-up. No registry to publish to.
|
|
20
|
+
#
|
|
21
|
+
# WILL UPGRADING BREAK MY PLUGIN?
|
|
22
|
+
# No. If we add new fields in a future version, older versions of NeuroDock
|
|
23
|
+
# will leave them alone instead of stripping them out. You can edit your
|
|
24
|
+
# plugin on a new install, swap back to an old one, and not lose anything.
|
|
25
|
+
# ==============================================================================
|
|
26
|
+
|
|
27
|
+
# Leave this as "0.1.0". It just tells NeuroDock which version of the plugin
|
|
28
|
+
# format you're using. If you're newer than NeuroDock, you'll get a warning,
|
|
29
|
+
# not an error.
|
|
30
|
+
schema_version: "0.1.0"
|
|
31
|
+
|
|
32
|
+
# ------------------------------------------------------------------------------
|
|
33
|
+
# 1. WHO THIS PLUGIN IS (Required)
|
|
34
|
+
# ------------------------------------------------------------------------------
|
|
35
|
+
# A short, unique name. Lowercase, dashes between words.
|
|
36
|
+
# Tip: starting it with your handle (e.g. "org-eobrien-...") helps avoid
|
|
37
|
+
# clashes with other contributors' plugins. Not required.
|
|
38
|
+
name: "ie-corporate-translation"
|
|
39
|
+
|
|
40
|
+
# What kind of plugin is this? Pick one:
|
|
41
|
+
# skill — adds a Claude skill (a markdown file with triggers)
|
|
42
|
+
# mcp-server — adds a new MCP server with new tools
|
|
43
|
+
# profile — adds a profile preset users can copy
|
|
44
|
+
# translation-pack — adds translation prompts for a domain (legal, sales...)
|
|
45
|
+
# language-pack — adds prompts for a non-US-English workplace culture
|
|
46
|
+
# theme — adds a visual theme for UI surfaces
|
|
47
|
+
type: "language-pack"
|
|
48
|
+
|
|
49
|
+
# Your plugin's version number. Use semver (e.g. "0.2.1"). Bumping the
|
|
50
|
+
# patch (third) number means "small fix, nothing broke". Bumping the minor
|
|
51
|
+
# (middle) means "added a new feature, nothing broke". Bumping the major
|
|
52
|
+
# (first) means "I changed something that might break people". Try not to
|
|
53
|
+
# bump the major in 0.1.x unless you really have to.
|
|
54
|
+
version: "0.2.1"
|
|
55
|
+
|
|
56
|
+
# A one-sentence description of what this plugin does. This is what people
|
|
57
|
+
# see in plugin listings. Don't make clinical claims here — say what the
|
|
58
|
+
# plugin DOES, not what it TREATS.
|
|
59
|
+
description: "Hiberno-English to neutral corporate English for ND professionals — direct decoding of indirect Irish workplace register without flattening voice."
|
|
60
|
+
|
|
61
|
+
# ------------------------------------------------------------------------------
|
|
62
|
+
# 2. WHO MADE IT (Optional but appreciated)
|
|
63
|
+
# ------------------------------------------------------------------------------
|
|
64
|
+
# Listing at least one maintainer helps when something needs fixing.
|
|
65
|
+
# "role" is whatever makes sense — maintainer, reviewer, lived-experience reviewer.
|
|
66
|
+
authors:
|
|
67
|
+
- name: "Eoin O'Brien"
|
|
68
|
+
handle: "@eobrien"
|
|
69
|
+
role: "maintainer"
|
|
70
|
+
- name: "Síofra Ní Bhriain"
|
|
71
|
+
handle: "@sionb"
|
|
72
|
+
role: "reviewer" # lived-experience reviewer
|
|
73
|
+
|
|
74
|
+
# ------------------------------------------------------------------------------
|
|
75
|
+
# 3. WHO IS THIS PLUGIN FOR? (Optional)
|
|
76
|
+
# ------------------------------------------------------------------------------
|
|
77
|
+
# Which neurotypes does this plugin help? Leave the list empty (or remove
|
|
78
|
+
# this block) if it works for everyone — most plugins do.
|
|
79
|
+
#
|
|
80
|
+
# If a user's profile lists any of these neurotypes, NeuroDock turns this
|
|
81
|
+
# plugin on for them automatically. If not, they can still turn it on by
|
|
82
|
+
# hand — your plugin isn't blocked, just not on by default.
|
|
83
|
+
neurotypes:
|
|
84
|
+
- "adhd"
|
|
85
|
+
- "audhd"
|
|
86
|
+
- "asd"
|
|
87
|
+
|
|
88
|
+
# Which spoken-language / workplace cultures is this plugin for?
|
|
89
|
+
# REQUIRED if type is "language-pack" or "translation-pack".
|
|
90
|
+
# Use BCP 47 tags ("en-IE" = Irish English, "ja-JP" = Japanese, etc.)
|
|
91
|
+
locale:
|
|
92
|
+
- "en-IE"
|
|
93
|
+
- "en-GB" # Irish-English register often shows up in UK workplaces too
|
|
94
|
+
|
|
95
|
+
# ------------------------------------------------------------------------------
|
|
96
|
+
# 4. WHAT THIS PLUGIN NEEDS TO RUN (Optional)
|
|
97
|
+
# ------------------------------------------------------------------------------
|
|
98
|
+
# If your plugin needs a specific version of NeuroDock or another MCP server,
|
|
99
|
+
# say so here. NeuroDock will skip loading your plugin (cleanly) if any of
|
|
100
|
+
# these aren't around.
|
|
101
|
+
requires:
|
|
102
|
+
substrate_version: ">=0.1.0"
|
|
103
|
+
mcp_servers:
|
|
104
|
+
- name: "mcp-translation"
|
|
105
|
+
version: ">=0.1.0"
|
|
106
|
+
skills: []
|
|
107
|
+
plugins: []
|
|
108
|
+
|
|
109
|
+
# ------------------------------------------------------------------------------
|
|
110
|
+
# 5. WHAT YOUR PLUGIN PROVIDES
|
|
111
|
+
# ------------------------------------------------------------------------------
|
|
112
|
+
# This is the actual content your plugin ships. Each entry points at a file
|
|
113
|
+
# inside your plugin's directory. All paths are relative — your plugin can't
|
|
114
|
+
# reach outside its own folder. That's a deliberate safety rule.
|
|
115
|
+
provides:
|
|
116
|
+
- type: "language-prompt-override"
|
|
117
|
+
id: "translate-incoming-en-ie"
|
|
118
|
+
path: "./prompts/translate-incoming.md"
|
|
119
|
+
# You can narrow when a single file applies, separate from the
|
|
120
|
+
# whole-plugin neurotypes/locale settings above.
|
|
121
|
+
applies_to:
|
|
122
|
+
locale: ["en-IE", "en-GB"]
|
|
123
|
+
|
|
124
|
+
- type: "language-prompt-override"
|
|
125
|
+
id: "check-tone-en-ie"
|
|
126
|
+
path: "./prompts/check-tone.md"
|
|
127
|
+
|
|
128
|
+
- type: "language-prompt-override"
|
|
129
|
+
id: "brief-meeting-en-ie"
|
|
130
|
+
path: "./prompts/brief-meeting.md"
|
|
131
|
+
|
|
132
|
+
- type: "translation-prompt"
|
|
133
|
+
id: "decode-grand"
|
|
134
|
+
path: "./prompts/idioms/decode-grand.md"
|
|
135
|
+
# "Grand" in Hiberno-English can mean anything from "excellent" to
|
|
136
|
+
# "this is not fine and we are not going to discuss it further." It
|
|
137
|
+
# earns its own prompt.
|
|
138
|
+
|
|
139
|
+
# ------------------------------------------------------------------------------
|
|
140
|
+
# 6. WHERE THIS PLUGIN CAME FROM (Required)
|
|
141
|
+
# ------------------------------------------------------------------------------
|
|
142
|
+
# This is the "trust" block. It tells NeuroDock how much social process has
|
|
143
|
+
# touched this plugin so it knows whether to prompt the user before activating.
|
|
144
|
+
#
|
|
145
|
+
# Levels:
|
|
146
|
+
# official — published by the NeuroDock maintainer; installs silently
|
|
147
|
+
# verified — signed against the maintainer keyring; installs silently
|
|
148
|
+
# community — your own plugin, author-signed; user gets a one-time prompt
|
|
149
|
+
# experimental — unsigned; NeuroDock refuses by default unless user opts in
|
|
150
|
+
#
|
|
151
|
+
# Most contributor plugins are "community". That's a good thing.
|
|
152
|
+
trust:
|
|
153
|
+
level: "community"
|
|
154
|
+
signature: |
|
|
155
|
+
-----BEGIN PGP SIGNATURE-----
|
|
156
|
+
(detached signature over sha256(plugin.yaml + provides[].path contents))
|
|
157
|
+
-----END PGP SIGNATURE-----
|
|
158
|
+
keyring_fingerprint: "A1B2 C3D4 E5F6 7890 1234 5678 9ABC DEF0 1234 5678"
|
|
159
|
+
source_url: "https://github.com/eobrien/ie-corporate-translation"
|
|
160
|
+
|
|
161
|
+
# ------------------------------------------------------------------------------
|
|
162
|
+
# 7. LICENSE (Required)
|
|
163
|
+
# ------------------------------------------------------------------------------
|
|
164
|
+
# Your plugin's licence. Must be one of the allowed-list licences (they all
|
|
165
|
+
# play nicely with AGPL-3.0). If you pick one that isn't on the list,
|
|
166
|
+
# NeuroDock will refuse to load the plugin with a clear "license_not_allowed"
|
|
167
|
+
# error so nothing silently fails.
|
|
168
|
+
license: "AGPL-3.0-or-later"
|
|
169
|
+
|
|
170
|
+
# ------------------------------------------------------------------------------
|
|
171
|
+
# 8. WHERE PEOPLE CAN LEARN MORE (Optional)
|
|
172
|
+
# ------------------------------------------------------------------------------
|
|
173
|
+
homepage: "https://hiberno-translate.example.org"
|
|
174
|
+
repository: "https://github.com/eobrien/ie-corporate-translation"
|
|
175
|
+
keywords:
|
|
176
|
+
- "translation"
|
|
177
|
+
- "hiberno-english"
|
|
178
|
+
- "corporate"
|
|
179
|
+
- "indirect-speech"
|
|
180
|
+
|
|
181
|
+
# ------------------------------------------------------------------------------
|
|
182
|
+
# 9. LIFECYCLE HOOKS (Optional, advanced)
|
|
183
|
+
# ------------------------------------------------------------------------------
|
|
184
|
+
# Scripts that run on install/uninstall. For safety, NeuroDock will only
|
|
185
|
+
# run these for "official" or "verified" plugins right now. You can declare
|
|
186
|
+
# them for a community plugin — they'll just sit there politely ignored
|
|
187
|
+
# until the safer hook sandbox lands.
|
|
188
|
+
hooks:
|
|
189
|
+
on_install: "./install.sh" # idempotent; no network, no writing outside the plugin dir
|
|
190
|
+
on_uninstall: "./uninstall.sh" # clean up anything you created locally
|
|
191
|
+
|
|
192
|
+
# Reserved for future use. Leave empty.
|
|
193
|
+
compatibility: {}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# THE SMALLEST POSSIBLE PLUGIN MANIFEST
|
|
3
|
+
# ==============================================================================
|
|
4
|
+
# This file contains ONLY the required fields for a NeuroDock plugin. Every
|
|
5
|
+
# other field is optional. If you're just starting out, this is the shape to
|
|
6
|
+
# copy.
|
|
7
|
+
#
|
|
8
|
+
# For the full version with every option explained, see:
|
|
9
|
+
# packages/core/schemas/plugin.example.yaml
|
|
10
|
+
#
|
|
11
|
+
# For the design rationale behind why these fields exist:
|
|
12
|
+
# docs/decisions/0007-plugin-protocol.md
|
|
13
|
+
#
|
|
14
|
+
# The "neurodock plugin scaffold" command would write something close to
|
|
15
|
+
# this file. Every required field is present, no optional ones are.
|
|
16
|
+
# ==============================================================================
|
|
17
|
+
|
|
18
|
+
schema_version: "0.1.0"
|
|
19
|
+
name: "minimal-example"
|
|
20
|
+
type: "skill"
|
|
21
|
+
version: "0.1.0"
|
|
22
|
+
description: "Minimal valid plugin manifest — replace with your one-sentence summary."
|
|
23
|
+
license: "AGPL-3.0-or-later"
|
|
24
|
+
trust:
|
|
25
|
+
level: "experimental"
|
|
26
|
+
# Heads up: with trust.level = "experimental" NeuroDock will refuse to
|
|
27
|
+
# load this plugin by default — that's a safety feature, not a bug.
|
|
28
|
+
# To get it loading, do one of:
|
|
29
|
+
# (a) bump trust.level to "community" and add a "source_url", or
|
|
30
|
+
# (b) opt in just this once: `neurodock plugin trust <name> --once`
|