@@ -28,37 +28,38 @@ manifest-declared `hooks/hooks.json` from that directory; plugin hooks run from
2828The installer writes an install receipt (` .agent-bundle-install.json ` : plugin, version, content hash,
2929owned files) beside the plugin manifest. Re-running ` node ./install.mjs ` on an identical artifact
3030is a no-op that says so. When the installed copy has the same version but different content, the
31- installer replaces its owned files in place and leaves runtime state ( ` state/ ` ) untouched:
31+ installer replaces its owned files in place and leaves unowned entries untouched:
3232
3333``` sh
3434node ./install.mjs # same-version content drift of a receipt-managed copy is replaced
35- node ./install.mjs --replace # also replace a different installed version, or adopt a pre-receipt copy
35+ node ./install.mjs --replace # also replace a different installed version
3636```
3737
38- ` --force ` is an alias for ` --replace ` . A directory that is not an agent-bundle install of this
39- plugin is always refused with an installed-versus-artifact content-hash comparison; remove it
40- manually. The optional ` agent-bundle ` CLI applies the same policy through
38+ A directory without a receipt naming this plugin (including a copy placed before install receipts
39+ existed) is foreign and always refused with an installed-versus-artifact content-hash comparison;
40+ remove it manually and reinstall . The optional ` agent-bundle ` CLI applies the same policy through
4141` agent-bundle install cursor --from ./ [--replace] ` .
4242
4343### Uninstall
4444
4545``` sh
4646node ./install.mjs --uninstall --plan # print exactly what would be removed
47- node ./install.mjs --uninstall # remove the receipt-owned files; keep state/
48- node ./install.mjs --uninstall --purge-data --confirm-purge # also remove durable runtime state
47+ node ./install.mjs --uninstall # remove the receipt-owned files; keep durable state
48+ node ./install.mjs --uninstall --purge-data --confirm-purge # also remove receipt-owned durable runtime state
4949node ./install.mjs --uninstall --mode marketplace # remove a staged marketplace repository
5050```
5151
5252Uninstall removes exactly what the receipt owns: the listed files, the directories the installer
5353created (including ` ~/.cursor/plugins/local ` when the installer made it), and nothing else. Durable
54- runtime state under ` state/ ` (state kernel, notices journal) — and, for an Agent Plugins pack with a stdio
55- server, the ` ~/.cursor/agent-bundle/plugin-data/<name> ` directory the receipt records as ` PLUGIN_DATA ` — is kept
56- unless ` --purge-data --confirm-purge ` is passed (a kept data directory leaves a remnant receipt behind so a later
57- purge still finds it; an empty one is pruned); unowned files are left in place and listed. A supported older
58- receipt with no recorded state location retains the current environment's default as unproven; a keep-data run
59- cannot turn that observation into later purge authority. A directory without a receipt is refused unless
60- ` --force ` (which removes a pre-receipt legacy copy by its inventory); owned content that no longer matches
61- the receipt is refused unless ` --force ` ; a directory that is not this plugin's install is always refused.
54+ runtime state (the framework state roots the receipt records with ownership evidence) — and, for an Agent
55+ Plugins pack with a stdio server, the ` ~/.cursor/agent-bundle/plugin-data/<name> ` directory the receipt records
56+ as ` PLUGIN_DATA ` — is kept unless ` --purge-data --confirm-purge ` is passed (a kept data directory leaves a
57+ remnant receipt behind so a later purge still finds it; an empty one is pruned); unowned entries, including a
58+ ` state/ ` directory beside the plugin, are left in place and listed. A receipt with no recorded state location
59+ (written before the install could record it) retains the current environment's default as unproven; a
60+ keep-data run cannot turn that observation into later purge authority. A directory without a receipt naming
61+ this plugin is foreign and always refused, with or without ` --force ` ; owned content that no longer matches
62+ the receipt is refused unless ` --force ` .
6263A second run is a ` Not installed ` no-op. With the optional ` agent-bundle ` CLI,
6364` agent-bundle uninstall cursor --from ./ [--mode marketplace] ` applies the same policy, and
6465` agent-bundle doctor --from ./ ` shows the lifecycle stage (placed, registered, enabled, active) with
@@ -142,21 +143,21 @@ other clients; the recorded clients above name which of them expand the placehol
142143### Reinstall after a same-version rebuild
143144
144145The installer records an install receipt (` .agent-bundle-install.json ` ) and replaces its owned files in
145- place when the same version was rebuilt with different content; runtime state ( ` state/ ` ) is never
146- touched. Pass ` --replace ` (alias ` --force ` ) to replace a different installed version or to adopt a
147- copy installed before receipts existed. Foreign directories are refused with a content-hash
148- comparison. For a client that manages its own copy, remove and re-add the plugin through that client
149- when only content changed at the same version.
146+ place when the same version was rebuilt with different content; unowned entries are never
147+ touched. Pass ` --replace ` to replace a different installed version. A directory without a receipt
148+ naming this plugin (including a copy installed before receipts existed) is foreign and refused with a
149+ content-hash comparison; remove it manually . For a client that manages its own copy, remove and re-add
150+ the plugin through that client when only content changed at the same version.
150151
151152### Uninstall
152153
153154``` sh
154155node ./install.mjs --uninstall --plan # print exactly what would be removed
155- node ./install.mjs --uninstall # remove the receipt-owned files; keep state/
156- node ./install.mjs --uninstall --purge-data --confirm-purge # also remove durable runtime state
156+ node ./install.mjs --uninstall # remove the receipt-owned files; keep durable state
157+ node ./install.mjs --uninstall --purge-data --confirm-purge # also remove receipt-owned durable runtime state
157158```
158159
159160Uninstall removes exactly what the receipt owns (files, installer-created directories) and keeps
160- durable runtime state under ` state/ ` (and the recorded ` PLUGIN_DATA ` directory of an Agent Plugins pack)
161- unless ` --purge-data --confirm-purge ` is passed. A missing
162- receipt or modified owned content is refused unless ` --force ` ; foreign directories are always refused.
161+ the durable runtime state the receipt records (and the recorded ` PLUGIN_DATA ` directory of an Agent Plugins
162+ pack) unless ` --purge-data --confirm-purge ` is passed. Modified owned content is refused unless ` --force ` ;
163+ a directory without a receipt naming this plugin is foreign and always refused.
0 commit comments