@amsterdamdatalabs/enact-extensions 0.1.10 → 0.1.24

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.
Files changed (152) hide show
  1. package/README.md +11 -12
  2. package/dist/create/claude.d.ts.map +1 -1
  3. package/dist/create/claude.js +6 -2
  4. package/dist/create/claude.js.map +1 -1
  5. package/dist/create/cursor.d.ts.map +1 -1
  6. package/dist/create/cursor.js +6 -2
  7. package/dist/create/cursor.js.map +1 -1
  8. package/dist/create/enact.js +1 -1
  9. package/dist/create/enact.js.map +1 -1
  10. package/dist/create/index.d.ts +4 -3
  11. package/dist/create/index.d.ts.map +1 -1
  12. package/dist/create/index.js +9 -2
  13. package/dist/create/index.js.map +1 -1
  14. package/dist/index.d.ts +9 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +5 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/install.d.ts +5 -0
  19. package/dist/install.d.ts.map +1 -1
  20. package/dist/install.js +91 -11
  21. package/dist/install.js.map +1 -1
  22. package/dist/internal/agents.d.ts +25 -1
  23. package/dist/internal/agents.d.ts.map +1 -1
  24. package/dist/internal/agents.js +81 -4
  25. package/dist/internal/agents.js.map +1 -1
  26. package/dist/internal/claude.d.ts +49 -0
  27. package/dist/internal/claude.d.ts.map +1 -1
  28. package/dist/internal/claude.js +166 -1
  29. package/dist/internal/claude.js.map +1 -1
  30. package/dist/internal/platform.d.ts +11 -1
  31. package/dist/internal/platform.d.ts.map +1 -1
  32. package/dist/internal/platform.js +58 -1
  33. package/dist/internal/platform.js.map +1 -1
  34. package/dist/internal/types.d.ts +2 -1
  35. package/dist/internal/types.d.ts.map +1 -1
  36. package/dist/principles.d.ts +28 -0
  37. package/dist/principles.d.ts.map +1 -0
  38. package/dist/principles.js +159 -0
  39. package/dist/principles.js.map +1 -0
  40. package/extensions/dev-state/.agents/plugin.json +2 -1
  41. package/extensions/enact-context/.agents/plugin.json +2 -1
  42. package/extensions/enact-context/hooks/hooks.json +0 -10
  43. package/extensions/enact-context/skills/enact-context/SKILL.md +14 -12
  44. package/extensions/enact-context/skills/enact-context/scripts/install.sh +7 -7
  45. package/extensions/enact-core/.agents/plugin.json +2 -1
  46. package/extensions/enact-core/OPERATING-PRINCIPLES.md +7 -0
  47. package/extensions/enact-core/hooks/hooks.json +12 -0
  48. package/extensions/enact-evolve/.agents/plugin.json +47 -0
  49. package/extensions/enact-evolve/agents/evolve-session-analyst.toml +37 -0
  50. package/extensions/enact-evolve/skills/session-analysis/SKILL.md +98 -0
  51. package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +343 -0
  52. package/extensions/enact-factory/.agents/plugin.json +2 -1
  53. package/extensions/enact-factory/agents/architect.toml +9 -5
  54. package/extensions/enact-factory/agents/code-reviewer.toml +9 -5
  55. package/extensions/enact-factory/agents/critic.toml +9 -5
  56. package/extensions/enact-factory/agents/executor.toml +4 -1
  57. package/extensions/enact-factory/agents/explore.toml +4 -1
  58. package/extensions/enact-factory/agents/planner.toml +4 -1
  59. package/extensions/enact-factory/agents/verifier.toml +9 -5
  60. package/extensions/enact-factory/skills/advisor/SKILL.md +82 -0
  61. package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +6 -1
  62. package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +347 -0
  63. package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +62 -15
  64. package/extensions/enact-factory/skills/committee/SKILL.md +80 -0
  65. package/extensions/enact-factory/skills/deep-interview/SKILL.md +9 -13
  66. package/extensions/enact-factory/skills/drive-loop/SKILL.md +161 -31
  67. package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +26 -6
  68. package/extensions/enact-factory/skills/handoff/SKILL.md +72 -0
  69. package/extensions/enact-factory/skills/hyperplan/SKILL.md +11 -3
  70. package/extensions/enact-factory/skills/looplan/SKILL.md +34 -17
  71. package/extensions/enact-factory/skills/plan/SKILL.md +40 -8
  72. package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +6 -1
  73. package/extensions/enact-factory/skills/research/SKILL.md +14 -4
  74. package/extensions/enact-factory/skills/review/SKILL.md +21 -2
  75. package/extensions/enact-factory/skills/security-research/SKILL.md +5 -2
  76. package/extensions/enact-factory/skills/tdd/SKILL.md +7 -1
  77. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +5 -0
  78. package/extensions/enact-factory/skills/trace/SKILL.md +5 -0
  79. package/extensions/enact-factory/skills/ultraqa/SKILL.md +21 -15
  80. package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +5 -0
  81. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +5 -0
  82. package/extensions/enact-loop/.agents/plugin.json +5 -4
  83. package/extensions/enact-loop/scripts/validate.mjs +123 -0
  84. package/extensions/enact-loop/skills/enact-loop/SKILL.md +189 -30
  85. package/extensions/enact-wiki/.agents/plugin.json +2 -1
  86. package/extensions/net-revenue-management/.agents/plugin.json +2 -1
  87. package/extensions/plugin-dev/.agents/plugin.json +2 -1
  88. package/extensions/plugin-dev/skills/start/SKILL.md +3 -3
  89. package/package.json +1 -1
  90. package/scripts/check-hooks.mjs +5 -5
  91. package/scripts/check-principles.mjs +19 -4
  92. package/scripts/enact-extensions.mjs +237 -90
  93. package/scripts/lib/hooks.mjs +61 -217
  94. package/scripts/lib/migrate-artifacts.mjs +144 -0
  95. package/scripts/lib/principles.mjs +109 -0
  96. package/scripts/lib/provision-mcp.mjs +1 -1
  97. package/scripts/lib/run-install.mjs +72 -2
  98. package/scripts/lib/run-prune.mjs +23 -2
  99. package/scripts/lib/run-sync.mjs +4 -1
  100. package/scripts/postinstall.mjs +6 -6
  101. package/scripts/setup-enact-context.sh +20 -15
  102. package/spec/codex.json +5 -0
  103. package/spec/enact.json +3 -3
  104. package/spec/enact.md +1 -4
  105. package/spec/index.json +1 -1
  106. package/extensions/enact-operator/.agents/plugin.json +0 -56
  107. package/extensions/enact-operator/.app.json +0 -3
  108. package/extensions/enact-operator/.mcp.json +0 -10
  109. package/extensions/enact-operator/_taxonomy.md +0 -86
  110. package/extensions/enact-operator/agents/README.md +0 -5
  111. package/extensions/enact-operator/agents/architect.toml +0 -25
  112. package/extensions/enact-operator/agents/code-reviewer.toml +0 -24
  113. package/extensions/enact-operator/agents/critic.toml +0 -30
  114. package/extensions/enact-operator/agents/executor.toml +0 -24
  115. package/extensions/enact-operator/agents/explore.toml +0 -23
  116. package/extensions/enact-operator/agents/planner.toml +0 -24
  117. package/extensions/enact-operator/agents/verifier.toml +0 -24
  118. package/extensions/enact-operator/docs/skill-variants.md +0 -44
  119. package/extensions/enact-operator/hooks/hooks.json +0 -91
  120. package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +0 -50
  121. package/extensions/enact-operator/skills/analyze/SKILL.md +0 -91
  122. package/extensions/enact-operator/skills/ask/SKILL.md +0 -47
  123. package/extensions/enact-operator/skills/autopilot/SKILL.md +0 -170
  124. package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +0 -79
  125. package/extensions/enact-operator/skills/cancel/SKILL.md +0 -99
  126. package/extensions/enact-operator/skills/configure-notifications/SKILL.md +0 -77
  127. package/extensions/enact-operator/skills/deep-interview/SKILL.md +0 -80
  128. package/extensions/enact-operator/skills/doctor/SKILL.md +0 -48
  129. package/extensions/enact-operator/skills/hud/SKILL.md +0 -49
  130. package/extensions/enact-operator/skills/hyperplan/SKILL.md +0 -47
  131. package/extensions/enact-operator/skills/plan/SKILL.md +0 -78
  132. package/extensions/enact-operator/skills/ralph/SKILL.md +0 -201
  133. package/extensions/enact-operator/skills/ralph/gemini.md +0 -18
  134. package/extensions/enact-operator/skills/ralplan/SKILL.md +0 -151
  135. package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +0 -45
  136. package/extensions/enact-operator/skills/research/SKILL.md +0 -74
  137. package/extensions/enact-operator/skills/review/SKILL.md +0 -58
  138. package/extensions/enact-operator/skills/security-research/SKILL.md +0 -54
  139. package/extensions/enact-operator/skills/setup/SKILL.md +0 -91
  140. package/extensions/enact-operator/skills/setup/scripts/install.sh +0 -50
  141. package/extensions/enact-operator/skills/skill/SKILL.md +0 -82
  142. package/extensions/enact-operator/skills/tdd/SKILL.md +0 -59
  143. package/extensions/enact-operator/skills/team/SKILL.md +0 -199
  144. package/extensions/enact-operator/skills/trace/SKILL.md +0 -41
  145. package/extensions/enact-operator/skills/ultragoal/SKILL.md +0 -99
  146. package/extensions/enact-operator/skills/ultraqa/SKILL.md +0 -113
  147. package/extensions/enact-operator/skills/ultrawork/SKILL.md +0 -145
  148. package/extensions/enact-operator/skills/ultrawork/planner.md +0 -28
  149. package/extensions/enact-operator/skills/wiki/SKILL.md +0 -41
  150. package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +0 -51
  151. /package/extensions/{enact-operator → enact-evolve}/assets/icon.png +0 -0
  152. /package/extensions/{enact-operator → enact-evolve}/assets/logo.png +0 -0
package/README.md CHANGED
@@ -12,7 +12,7 @@ This repo is the manifest tooling package (`@amsterdamdatalabs/enact-extensions`
12
12
 
13
13
  - `spec/` — JSON schemas (canonical: `enact.json`) + per-host schemas (`claude-plugin.json`, `codex-plugin.json`, `cursor-plugin.json`) + `index.json` (discovery index schema)
14
14
  - `src/` — `create/*`, `validate/*`, and `install` TypeScript library
15
- - `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve` | `hooks`, path defaults to cwd)
15
+ - `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve`, path defaults to cwd)
16
16
  - `extensions/<plugin>/` — one self-contained bundle per plugin (e.g. `plugin-dev`, `cmux`, `devops`, `dev-state`, `net-revenue-management`), each with a canonical `.agents/plugin.json` + skills/agents/hooks
17
17
  - `web/` — vendored ADL design assets (`web/assets/tokens/*.css`, `web/assets/logo-*.png`) + `web/index.html` (the management UI served by `serve`)
18
18
 
@@ -88,10 +88,9 @@ node scripts/enact-extensions.mjs update --all
88
88
  node scripts/enact-extensions.mjs update net-revenue-management
89
89
  node scripts/enact-extensions.mjs update --all --dry-run
90
90
 
91
- # Install the session-start drift-check hook
92
- node scripts/enact-extensions.mjs hooks setup --all
93
- node scripts/enact-extensions.mjs hooks setup --surfaces claude,codex
94
- node scripts/enact-extensions.mjs hooks setup --all --remove
91
+ # Install/update enact-core so the drift-check hook is bundle-owned
92
+ node scripts/enact-extensions.mjs install enact-core --platform all
93
+ node scripts/enact-extensions.mjs install enact-core --platform claude,codex
95
94
 
96
95
  # Start the localhost management UI + API
97
96
  node scripts/enact-extensions.mjs serve
@@ -108,7 +107,7 @@ enact-extensions validate
108
107
  enact-extensions sync
109
108
  ```
110
109
 
111
- Subcommands: `validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve` | `hooks`.
110
+ Subcommands: `validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve`.
112
111
 
113
112
  Link locally:
114
113
 
@@ -123,9 +122,9 @@ The freshness loop keeps installed plugins in sync with their canonical source w
123
122
  1. **Install records a content hash** — `enact-extensions install` writes a sha256 hash of the canonical bundle into the ledger entry alongside the version.
124
123
  2. **`outdated` detects drift per surface** — compares the recorded hash against the current canonical source hash for each `(plugin, surface)` pair. Status values: `fresh` / `outdated` / `orphaned`. Exit 0 always (report only).
125
124
  3. **`update` refreshes the installed surfaces** — driven by the ledger; only the surfaces a plugin is actually installed on are updated. `--all` refreshes every outdated surface; `<name>` refreshes that plugin's outdated surfaces; `--dry-run` shows what would change without touching anything.
126
- 4. **Session-start hook (optional)** — `enact-extensions hooks setup` installs a fast, fail-silent hook that runs `outdated` at the start of each agent session and prints a single advisory line (the exact `enact-extensions update --all` command) when anything is stale. It never auto-updates. Interactive surface picker when run in a TTY with no flags.
125
+ 4. **Session-start hook (optional)** — `enact-core` owns the advisory `SessionStart` hook (`enact-extensions hook session-start`). Installing `enact-core` on a surface makes the drift check bundle-owned and removes stale pre-bundle standalone drift-hook entries there.
127
126
 
128
- **npm postinstall surface-picker:** when you `npm install @amsterdamdatalabs/enact-extensions` in an interactive terminal, a TTY-aware postinstall script prompts which surfaces should receive the drift hook. In non-interactive terminals and CI environments it prints a one-line notice (`Run enact-extensions hooks setup …`) and exits immediately — it never blocks installs or hangs pipelines.
127
+ **npm postinstall:** when you `npm install @amsterdamdatalabs/enact-extensions` in an interactive terminal, a TTY-aware postinstall script installs `enact-core` on all host surfaces. In non-interactive terminals and CI environments it prints a one-line notice (`Run enact-extensions install enact-core --platform all …`) and exits immediately — it never blocks installs or hangs pipelines.
129
128
 
130
129
  ## Web UI (`serve`)
131
130
 
@@ -146,18 +145,18 @@ enact-extensions log --json # raw JSON array
146
145
 
147
146
  ```text
148
147
  enact-extensions/ # @amsterdamdatalabs/enact-extensions package root
149
- ├── src/ spec/ scripts/ # manifest library + CLI (validate | sync | install | uninstall | list | index | log | outdated | update | serve | hooks)
148
+ ├── src/ spec/ scripts/ # manifest library + CLI (validate | sync | install | uninstall | list | index | log | outdated | update | serve)
150
149
  ├── web/ # management UI — web/index.html + web/assets/tokens/*.css + web/assets/logo-*.png
151
150
  ├── generated/ # gitignored — local discovery artifacts (e.g. index.json)
152
151
  └── extensions/ # self-contained plugin bundles
153
152
  ├── plugin-dev/ # plugin authoring toolkit
154
153
  ├── cmux/ devops/ dev-state/ # first-party skill bundles
155
- ├── enact-context/ enact-factory/ enact-loop/ enact-operator/ enact-wiki/
154
+ ├── enact-context/ enact-factory/ enact-loop/ enact-wiki/
156
155
  └── net-revenue-management/ # product and platform bundles
157
156
  ```
158
157
 
159
158
  ## enact-os integration
160
159
 
161
- `enact-os` submodules **this** repo at `enact-extensions/` for manifest tooling, and separately submodules the product packages (`enact-context`, `enact-factory`, `enact-operator`, `enact-wiki`) at top level. Factory and config paths in `enact-os/config.toml` target each product package by its top-level path.
160
+ `enact-os` submodules **this** repo at `enact-extensions/` for manifest tooling, and separately submodules the product packages (`enact-context`, `enact-factory`, `enact-wiki`) at top level. Factory and config paths in `enact-os/config.toml` target each product package by its top-level path.
162
161
 
163
- Host plugin delivery now lives in this repo for the shipped bundles under `extensions/`, including `enact-context`, `enact-factory`, `enact-loop`, `enact-operator`, and `enact-wiki`. **enact-loop is the default/recommended loop and contract-runner product.** enact-operator is available for teams that need the full operator surface (HUD, doctor, team orchestration, oversight) but is not in the default recommended set. Product runtimes still live in their own repos; use `enact-extensions install <name> --platform <surface>` for host registration, while repo-local commands such as `enact-factory setup` or `enact-factory plugins delivery` persist local runtime state.
162
+ Host plugin delivery now lives in this repo for the shipped bundles under `extensions/`, including `enact-context`, `enact-factory`, `enact-loop`, and `enact-wiki`. **enact-loop is the default/recommended loop and contract-runner product.** Product runtimes still live in their own repos; use `enact-extensions install <name> --platform <surface>` for host registration, while repo-local commands such as `enact-factory setup` or `enact-factory plugins delivery` persist local runtime state.
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAY1E"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAgB1E"}
@@ -1,12 +1,16 @@
1
- import { MANIFEST_FIELDS } from "../internal/platform.js";
1
+ import { MANIFEST_FIELDS, stripDefaultPathFields } from "../internal/platform.js";
2
2
  import { pickManifestFields, withPlatformKeyword } from "../internal/pick.js";
3
3
  export function deriveClaudeManifest(enact) {
4
4
  const picked = pickManifestFields(enact, MANIFEST_FIELDS.claude);
5
- return {
5
+ const manifest = {
6
6
  ...picked,
7
7
  description: (typeof picked.description === "string" ? picked.description : undefined) ??
8
8
  `${enact.name} plugin for Claude Code.`,
9
9
  keywords: withPlatformKeyword(Array.isArray(picked.keywords) ? picked.keywords : undefined, "claude"),
10
10
  };
11
+ // Claude auto-discovers skills/agents/hooks/mcpServers from default dirs.
12
+ // Listing those default paths breaks install (Duplicate hooks / Invalid
13
+ // input), so omit them; non-default overrides are kept.
14
+ return stripDefaultPathFields("claude", manifest);
11
15
  }
12
16
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjE,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EACT,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,GAAG,KAAK,CAAC,IAAI,0BAA0B;QACzC,QAAQ,EAAE,mBAAmB,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,CACT;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAmB;QAC/B,GAAG,MAAM;QACT,WAAW,EACT,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,GAAG,KAAK,CAAC,IAAI,0BAA0B;QACzC,QAAQ,EAAE,mBAAmB,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,CACT;KACF,CAAC;IACF,0EAA0E;IAC1E,wEAAwE;IACxE,wDAAwD;IACxD,OAAO,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAsB1E"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA0B1E"}
@@ -1,4 +1,4 @@
1
- import { MANIFEST_FIELDS } from "../internal/platform.js";
1
+ import { MANIFEST_FIELDS, stripDefaultPathFields } from "../internal/platform.js";
2
2
  import { pickManifestFields, withPlatformKeyword } from "../internal/pick.js";
3
3
  export function deriveCursorManifest(enact) {
4
4
  const picked = pickManifestFields(enact, MANIFEST_FIELDS.cursor);
@@ -9,12 +9,16 @@ export function deriveCursorManifest(enact) {
9
9
  typeof iface.logo === "string"
10
10
  ? iface.logo
11
11
  : undefined;
12
- return {
12
+ const manifest = {
13
13
  ...picked,
14
14
  description: (typeof picked.description === "string" ? picked.description : undefined) ??
15
15
  `${enact.name} plugin for Cursor.`,
16
16
  keywords: withPlatformKeyword(Array.isArray(picked.keywords) ? picked.keywords : undefined, "cursor"),
17
17
  ...(logo ? { logo } : {}),
18
18
  };
19
+ // Cursor auto-discovers skills/agents/hooks/mcp from default locations and the
20
+ // MCP file is `mcp.json` (no dot). Drop the default-path fields; the install
21
+ // projector renames `.mcp.json` → `mcp.json` and remaps the hooks schema.
22
+ return stripDefaultPathFields("cursor", manifest);
19
23
  }
20
24
  //# sourceMappingURL=cursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,IAAI,GACR,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK;QACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;QACnD,CAAC,CAAE,KAA0B,CAAC,IAAI;QAClC,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EACT,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,GAAG,KAAK,CAAC,IAAI,qBAAqB;QACpC,QAAQ,EAAE,mBAAmB,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,CACT;QACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,IAAI,GACR,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK;QACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;QACnD,CAAC,CAAE,KAA0B,CAAC,IAAI;QAClC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,QAAQ,GAAmB;QAC/B,GAAG,MAAM;QACT,WAAW,EACT,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,GAAG,KAAK,CAAC,IAAI,qBAAqB;QACpC,QAAQ,EAAE,mBAAmB,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,CACT;QACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1B,CAAC;IACF,+EAA+E;IAC/E,6EAA6E;IAC7E,0EAA0E;IAC1E,OAAO,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
@@ -2,7 +2,7 @@ import { DEFAULT_PATHS, DEFAULT_TARGETS } from "../internal/platform.js";
2
2
  export function createEnactManifest(input) {
3
3
  const name = input.name.trim();
4
4
  if (!/^[a-z][a-z0-9-]*$/.test(name)) {
5
- throw new Error(`Invalid plugin name "${name}". Use lowercase kebab-case (e.g. enact-operator).`);
5
+ throw new Error(`Invalid plugin name "${name}". Use lowercase kebab-case (e.g. code-review-assistant).`);
6
6
  }
7
7
  const manifest = {
8
8
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"enact.js","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,oDAAoD,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,IAAI,2BAA2B;QACpE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,eAAe,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;KAC5C,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7D,IAAI,KAAK,CAAC,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEvD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"enact.js","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,2DAA2D,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,IAAI,2BAA2B;QACpE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,eAAe,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;KAC5C,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7D,IAAI,KAAK,CAAC,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEvD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,10 +1,11 @@
1
- import type { CreateEnactInput, Platform, PluginManifest, SyncResult, TargetPlatform } from "../internal/types.js";
1
+ import type { CreateEnactInput, Platform, PluginManifest, ProjectionPlatform, SyncResult, TargetPlatform } from "../internal/types.js";
2
2
  export { createEnactManifest } from "./enact.js";
3
3
  export { deriveClaudeManifest } from "./claude.js";
4
4
  export { deriveCodexManifest } from "./codex.js";
5
5
  export { deriveCursorManifest } from "./cursor.js";
6
- export declare function deriveManifest(platform: TargetPlatform, enact: PluginManifest): PluginManifest;
6
+ export declare function deriveManifest(platform: ProjectionPlatform, enact: PluginManifest): PluginManifest;
7
7
  export declare function resolveTargets(enact: PluginManifest): TargetPlatform[];
8
+ export declare function resolveProjectionTargets(enact: PluginManifest): ProjectionPlatform[];
8
9
  export type ScaffoldOptions = CreateEnactInput & {
9
10
  pluginRoot: string;
10
11
  scaffoldDirs?: boolean;
@@ -13,6 +14,6 @@ export declare function scaffoldPlugin(options: ScaffoldOptions): {
13
14
  enact: PluginManifest;
14
15
  sync: SyncResult[];
15
16
  };
16
- export declare function syncPlatformManifests(pluginRoot: string, enact: PluginManifest, targets?: TargetPlatform[]): SyncResult[];
17
+ export declare function syncPlatformManifests(pluginRoot: string, enact: PluginManifest, targets?: ProjectionPlatform[]): SyncResult[];
17
18
  export declare function manifestForPlatform(platform: Platform, enact: PluginManifest): PluginManifest;
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAWnD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,cAAc,GACpB,cAAc,CAEhB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,CAMtE;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG;IACxD,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB,CASA;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,cAAc,EAAE,GACzB,UAAU,EAAE,CASd;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,GACpB,cAAc,CAKhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAa9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAWnD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,cAAc,GACpB,cAAc,CAEhB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,CAMtE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,EAAE,CAMpF;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG;IACxD,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB,CASA;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAC7B,UAAU,EAAE,CASd;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,GACpB,cAAc,CAKhB"}
@@ -1,6 +1,6 @@
1
1
  import { mkdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { DEFAULT_TARGETS, isTargetPlatform } from "../internal/platform.js";
3
+ import { DEFAULT_PROJECTION_TARGETS, DEFAULT_TARGETS, isProjectionPlatform, isTargetPlatform, } from "../internal/platform.js";
4
4
  import { writePlatformManifest } from "../internal/io.js";
5
5
  import { createEnactManifest } from "./enact.js";
6
6
  import { deriveClaudeManifest } from "./claude.js";
@@ -25,6 +25,13 @@ export function resolveTargets(enact) {
25
25
  }
26
26
  return raw.filter((t) => typeof t === "string" && isTargetPlatform(t));
27
27
  }
28
+ export function resolveProjectionTargets(enact) {
29
+ const raw = enact.targets;
30
+ if (!Array.isArray(raw)) {
31
+ return [...DEFAULT_PROJECTION_TARGETS];
32
+ }
33
+ return raw.filter((t) => typeof t === "string" && isProjectionPlatform(t));
34
+ }
28
35
  const COMPONENT_DIRS = ["skills", "commands", "hooks", "assets"];
29
36
  export function scaffoldPlugin(options) {
30
37
  const enact = createEnactManifest(options);
@@ -39,7 +46,7 @@ export function scaffoldPlugin(options) {
39
46
  export function syncPlatformManifests(pluginRoot, enact, targets) {
40
47
  const results = [];
41
48
  results.push(writePlatformManifest(pluginRoot, "enact", enact));
42
- const selected = targets ?? resolveTargets(enact);
49
+ const selected = targets ?? resolveProjectionTargets(enact);
43
50
  for (const platform of selected) {
44
51
  results.push(writePlatformManifest(pluginRoot, platform, deriveManifest(platform, enact)));
45
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
- export type { Platform, TargetPlatform, PluginManifest, ValidationResult, CreateEnactInput, SyncResult, } from "./internal/types.js";
1
+ export type { Platform, ProjectionPlatform, TargetPlatform, PluginManifest, ValidationResult, CreateEnactInput, SyncResult, } from "./internal/types.js";
2
2
  export type { CodexConfig, CodexConfigProbe, CodexFeatureStatus, CodexInstallHomesOptions, } from "./internal/codex.js";
3
3
  export { codexFeatureEnabled, readCodexFeatures } from "./internal/codex.js";
4
- export { defaultClaudeHome, readKnownMarketplaces, writeKnownMarketplaces, registerLocalMarketplace, } from "./internal/claude.js";
4
+ export { defaultClaudeHome, readKnownMarketplaces, readEnabledPlugins, writeKnownMarketplaces, registerLocalMarketplace, claudeMarketplaceManifestPath, upsertClaudeMarketplaceEntry, removeClaudeMarketplaceEntry, claudeCliScope, listClaudePlugins, activateClaudePlugin, } from "./internal/claude.js";
5
+ export type { ClaudeMarketplaceManifest, ClaudeMarketplacePluginEntry, ClaudeCliExec, ClaudeCliExecResult, } from "./internal/claude.js";
5
6
  export { defaultCursorHome } from "./internal/cursor.js";
6
- export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir } from "./internal/agents.js";
7
- export type { AgentDef } from "./internal/agents.js";
8
- export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PATHS, } from "./internal/platform.js";
7
+ export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir, projectCursorHooks, writeCursorHooksFile, } from "./internal/agents.js";
8
+ export type { AgentDef, MarkdownAgentPlatform } from "./internal/agents.js";
9
+ export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PROJECTION_TARGETS, DEFAULT_PATHS, DEFAULT_MCP_FILENAME, isProjectionPlatform, isTargetPlatform, stripDefaultPathFields, } from "./internal/platform.js";
9
10
  export { defaultCodexHome, defaultEnactHome, ensureMarketplace, ensureMcpServer, isPluginEnabled, readCodexConfig, readCodexConfigProbe, resolveCodexInstallHomes, removeMcpServer, removePluginConfig, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
10
- export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
11
+ export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveProjectionTargets, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
11
12
  export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, validatePluginBundleFromCanonical, checkComponentPaths, checkPluginBundleComponentPaths, checkPluginBundleComponentPathsFromCanonical, checkHookEvents, assertSupportedHookEvents, SUPPORTED_HOOK_EVENTS, readManifestFile, } from "./validate/index.js";
12
13
  export type { PluginValidationReport } from "./validate/index.js";
13
14
  export type { ScaffoldOptions } from "./create/index.js";
@@ -15,4 +16,6 @@ export { installCodexPluginBundle, installCodexPluginBundleWithProvision, instal
15
16
  export type { CodexPluginInstallOptions, CodexPluginInstallResult, CodexPluginInstallWithProvisionOptions, CodexPluginInstallWithProvisionResult, MultiCodexPluginInstallOptions, MultiCodexPluginInstallResult, MultiCodexPluginInstallWithProvisionOptions, MultiCodexPluginInstallWithProvisionResult, CodexPluginDoctorReport, CodexInstalledPluginStatus, ClaudePluginInstallOptions, ClaudePluginInstallResult, ClaudePluginInstallWithProvisionOptions, ClaudePluginInstallWithProvisionResult, ClaudePluginDoctorReport, ClaudeInstalledPluginStatus, CursorPluginInstallOptions, CursorPluginInstallResult, SharedPluginInstallOptions, SharedPluginInstallResult, CodexPluginUninstallOptions, CodexPluginUninstallResult, ClaudePluginUninstallOptions, ClaudePluginUninstallResult, CursorPluginUninstallOptions, CursorPluginUninstallResult, SharedPluginUninstallOptions, SharedPluginUninstallResult, } from "./install.js";
16
17
  export type { McpServerDefinition, ProvisionExec, ProvisionExecResult, ProvisionMcpOptions, ProvisionMcpResult, } from "./provision.js";
17
18
  export { readMcpServers, provisionMcp, summarizeProvision, } from "./provision.js";
19
+ export { PRINCIPLES_START_MARKER, PRINCIPLES_END_MARKER, SUPPORTED_PRINCIPLES_SURFACES, defaultDoctrinePath, renderBlock, applyBlock, removeBlock, checkBlock, resolveHostFile, } from "./principles.js";
20
+ export type { PrinciplesSurface, BlockStatus, ApplyAction, ResolveHostFileOptions, ApplyBlockResult, RemoveBlockResult, } from "./principles.js";
18
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EACb,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,mBAAmB,EACnB,+BAA+B,EAC/B,4CAA4C,EAC5C,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,wBAAwB,EACxB,qCAAqC,EACrC,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,EACzB,sCAAsC,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,sCAAsC,EACtC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2CAA2C,EAC3C,0CAA0C,EAC1C,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,uCAAuC,EACvC,sCAAsC,EACtC,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  export { codexFeatureEnabled, readCodexFeatures } from "./internal/codex.js";
2
- export { defaultClaudeHome, readKnownMarketplaces, writeKnownMarketplaces, registerLocalMarketplace, } from "./internal/claude.js";
2
+ export { defaultClaudeHome, readKnownMarketplaces, readEnabledPlugins, writeKnownMarketplaces, registerLocalMarketplace, claudeMarketplaceManifestPath, upsertClaudeMarketplaceEntry, removeClaudeMarketplaceEntry, claudeCliScope, listClaudePlugins, activateClaudePlugin, } from "./internal/claude.js";
3
3
  export { defaultCursorHome } from "./internal/cursor.js";
4
- export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir } from "./internal/agents.js";
5
- export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PATHS, } from "./internal/platform.js";
4
+ export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir, projectCursorHooks, writeCursorHooksFile, } from "./internal/agents.js";
5
+ export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PROJECTION_TARGETS, DEFAULT_PATHS, DEFAULT_MCP_FILENAME, isProjectionPlatform, isTargetPlatform, stripDefaultPathFields, } from "./internal/platform.js";
6
6
  export { defaultCodexHome, defaultEnactHome, ensureMarketplace, ensureMcpServer, isPluginEnabled, readCodexConfig, readCodexConfigProbe, resolveCodexInstallHomes, removeMcpServer, removePluginConfig, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
7
- export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
7
+ export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveProjectionTargets, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
8
8
  export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, validatePluginBundleFromCanonical, checkComponentPaths, checkPluginBundleComponentPaths, checkPluginBundleComponentPathsFromCanonical, checkHookEvents, assertSupportedHookEvents, SUPPORTED_HOOK_EVENTS, readManifestFile, } from "./validate/index.js";
9
9
  export { installCodexPluginBundle, installCodexPluginBundleWithProvision, installPluginBundle, installPluginBundleWithProvision, installClaudePluginBundle, installClaudePluginBundleWithProvision, installCursorPluginBundle, installSharedPluginBundle, codexMarketplaceRoot, codexMarketplacePath, codexMarketplacePluginPath, codexInstalledPluginPath, codexPluginCacheRoot, codexPluginCachePath, readCodexPluginManifest, claudeMarketplaceDir, claudeInstalledPluginPath, claudeKnownMarketplacesPath, readClaudePluginManifest, codexPluginStatus, claudePluginStatus, setInstalledCodexPluginEnabled, runCodexPluginsDoctor, runClaudePluginsDoctor, defaultSharedHome, uninstallCodexPluginBundle, uninstallClaudePluginBundle, uninstallCursorPluginBundle, uninstallSharedPluginBundle, } from "./install.js";
10
10
  export { readMcpServers, provisionMcp, summarizeProvision, } from "./provision.js";
11
+ export { PRINCIPLES_START_MARKER, PRINCIPLES_END_MARKER, SUPPORTED_PRINCIPLES_SURFACES, defaultDoctrinePath, renderBlock, applyBlock, removeBlock, checkBlock, resolveHostFile, } from "./principles.js";
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG3F,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,mBAAmB,EACnB,+BAA+B,EAC/B,4CAA4C,EAC5C,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,wBAAwB,EACxB,qCAAqC,EACrC,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,EACzB,sCAAsC,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAsCtB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,mBAAmB,EACnB,+BAA+B,EAC/B,4CAA4C,EAC5C,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,wBAAwB,EACxB,qCAAqC,EACrC,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,EACzB,sCAAsC,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAsCtB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
package/dist/install.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { PluginManifest, SyncResult } from "./internal/types.js";
2
+ import { type ClaudeCliExec } from "./internal/claude.js";
2
3
  import type { ProvisionExec, ProvisionMcpResult } from "./provision.js";
3
4
  export interface CodexPluginInstallOptions {
4
5
  pluginRoot: string;
@@ -67,6 +68,8 @@ export interface ClaudePluginInstallOptions {
67
68
  claudeHome?: string;
68
69
  marketplaceName?: string;
69
70
  sync?: boolean;
71
+ scope?: "global" | "local" | "project";
72
+ claudeExec?: ClaudeCliExec;
70
73
  }
71
74
  export interface ClaudePluginInstallResult {
72
75
  name: string;
@@ -84,11 +87,13 @@ export interface ClaudePluginDoctorReport {
84
87
  marketplaceRegistered: boolean;
85
88
  marketplacePlugins: string[];
86
89
  installedPlugins: string[];
90
+ enabledPlugins: string[];
87
91
  warnings: string[];
88
92
  }
89
93
  export interface ClaudeInstalledPluginStatus {
90
94
  name: string;
91
95
  installed: boolean;
96
+ enabled: boolean;
92
97
  manifest: PluginManifest | null;
93
98
  marketplaceName: string;
94
99
  marketplaceDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
package/dist/install.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join, resolve } from "node:path";
3
- import { projectAgentsDir } from "./internal/agents.js";
3
+ import { projectAgentsDir, writeCursorHooksFile } from "./internal/agents.js";
4
4
  import { homedir } from "node:os";
5
5
  import { defaultCodexHome, ensureMarketplace, isPluginEnabled, readCodexConfig, removePluginConfig, resolveCodexInstallHomes, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
6
6
  import { manifestForPlatform } from "./create/index.js";
7
- import { PROJECTION_COMPONENT_FIELDS } from "./internal/platform.js";
7
+ import { DEFAULT_MCP_FILENAME, DEFAULT_PATHS, PROJECTION_COMPONENT_FIELDS } from "./internal/platform.js";
8
8
  import { checkComponentPaths, readManifestFile, validateClaudeManifest, validateCodexManifest, validateCursorManifest, } from "./validate/index.js";
9
- import { defaultClaudeHome, readKnownMarketplaces, registerLocalMarketplace } from "./internal/claude.js";
9
+ import { defaultClaudeHome, readEnabledPlugins, readKnownMarketplaces, registerLocalMarketplace, removeClaudeMarketplaceEntry, upsertClaudeMarketplaceEntry, } from "./internal/claude.js";
10
10
  import { defaultCursorHome } from "./internal/cursor.js";
11
11
  import { provisionMcp } from "./provision.js";
12
12
  function readJson(path, fallback) {
@@ -41,20 +41,48 @@ function pathFieldsFromManifest(platform, manifest) {
41
41
  }
42
42
  return results;
43
43
  }
44
+ /**
45
+ * Component path candidates to COPY for a surface. Derived per-surface manifests
46
+ * may OMIT default-path fields (claude/cursor auto-discover from default dirs),
47
+ * so we cannot rely on the manifest alone to know what to copy. We therefore
48
+ * union the manifest's declared paths with the canonical default paths for each
49
+ * auto-discovered component — the on-disk-existence check downstream filters out
50
+ * components the bundle doesn't actually ship.
51
+ */
52
+ function copyPathCandidates(platform, manifest) {
53
+ const candidates = [...pathFieldsFromManifest(platform, manifest)];
54
+ // Fall back to canonical defaults for auto-discovered components that the
55
+ // derived manifest may have stripped (claude/cursor). Only consider fields the
56
+ // platform actually projects; codex/enact project canonical TOML agents while
57
+ // claude/cursor transform them to Markdown.
58
+ const projected = new Set(PROJECTION_COMPONENT_FIELDS[platform]);
59
+ for (const field of ["skills", "agents", "hooks", "mcpServers"]) {
60
+ if (!projected.has(field))
61
+ continue;
62
+ if (typeof manifest[field] === "string" && manifest[field].trim())
63
+ continue;
64
+ const def = DEFAULT_PATHS[field];
65
+ if (def)
66
+ candidates.push(def);
67
+ }
68
+ return candidates;
69
+ }
44
70
  function normalizedProjectionEntries(platform, manifest, platformDir) {
45
71
  const entries = new Set([platformDir, "README.md"]);
46
- for (const raw of pathFieldsFromManifest(platform, manifest)) {
72
+ for (const raw of copyPathCandidates(platform, manifest)) {
47
73
  const cleaned = raw.replace(/^\.\//, "").replace(/\/+$/, "");
48
74
  if (!cleaned || cleaned.startsWith("../"))
49
75
  continue;
50
76
  entries.add(cleaned);
51
77
  }
52
- if (typeof manifest.hooks === "string" && manifest.hooks.trim()) {
53
- const cleaned = manifest.hooks.replace(/^\.\//, "").replace(/\/+$/, "");
54
- if (cleaned.endsWith("/hooks.json")) {
55
- const parentDir = dirname(cleaned);
56
- if (parentDir !== ".")
57
- entries.add(parentDir);
78
+ for (const hooksValue of [manifest.hooks, DEFAULT_PATHS.hooks]) {
79
+ if (typeof hooksValue === "string" && hooksValue.trim()) {
80
+ const cleaned = hooksValue.replace(/^\.\//, "").replace(/\/+$/, "");
81
+ if (cleaned.endsWith("/hooks.json")) {
82
+ const parentDir = dirname(cleaned);
83
+ if (parentDir !== ".")
84
+ entries.add(parentDir);
85
+ }
58
86
  }
59
87
  }
60
88
  return [...entries];
@@ -68,7 +96,12 @@ function cleanRel(value) {
68
96
  function projectBundle(sourceRoot, targetRoot, platform, manifest, platformDir) {
69
97
  rmSync(targetRoot, { recursive: true, force: true });
70
98
  mkdirSync(targetRoot, { recursive: true });
71
- const agentsEntry = cleanRel(manifest.agents);
99
+ // Resolve the agents source dir even when the derived manifest omits the field
100
+ // (claude/cursor auto-discover agents/ from the default location).
101
+ const agentsEntry = cleanRel(manifest.agents) ?? cleanRel(DEFAULT_PATHS.agents);
102
+ // The on-disk hooks file we project from (default path; bundles use it).
103
+ const hooksFileRel = (cleanRel(manifest.hooks) ?? cleanRel(DEFAULT_PATHS.hooks)) ?? "hooks/hooks.json";
104
+ const hooksDirRel = hooksFileRel.endsWith("/hooks.json") ? dirname(hooksFileRel) : null;
72
105
  for (const entry of normalizedProjectionEntries(platform, manifest, platformDir)) {
73
106
  const sourcePath = resolve(sourceRoot, entry);
74
107
  if (!existsSync(sourcePath))
@@ -79,8 +112,41 @@ function projectBundle(sourceRoot, targetRoot, platform, manifest, platformDir)
79
112
  projectAgentsDir(sourcePath, join(targetRoot, entry), platform);
80
113
  continue;
81
114
  }
115
+ // Cursor uses a different hooks schema (flat camelCase). Skip the raw hooks
116
+ // dir copy here; the projected hooks.json is written below instead.
117
+ if (platform === "cursor" && hooksDirRel && entry === hooksDirRel) {
118
+ continue;
119
+ }
82
120
  cpSync(sourcePath, join(targetRoot, entry), { recursive: true, force: true });
83
121
  }
122
+ if (platform === "cursor") {
123
+ // Project the canonical hooks.json into Cursor's flat camelCase schema,
124
+ // preserving any non-hooks files alongside it (e.g. hook scripts).
125
+ const hooksSource = resolve(sourceRoot, hooksFileRel);
126
+ if (existsSync(hooksSource) && hooksDirRel) {
127
+ const targetHooksDir = join(targetRoot, hooksDirRel);
128
+ const sourceHooksDir = resolve(sourceRoot, hooksDirRel);
129
+ // Copy sibling files (scripts) verbatim, then overwrite the hooks.json.
130
+ if (existsSync(sourceHooksDir) && statSync(sourceHooksDir).isDirectory()) {
131
+ for (const f of readdirSync(sourceHooksDir, { withFileTypes: true })) {
132
+ if (f.name === "hooks.json")
133
+ continue;
134
+ cpSync(join(sourceHooksDir, f.name), join(targetHooksDir, f.name), {
135
+ recursive: true,
136
+ force: true,
137
+ });
138
+ }
139
+ }
140
+ writeCursorHooksFile(hooksSource, join(targetRoot, hooksFileRel));
141
+ }
142
+ // Cursor convention: the MCP config file is `mcp.json` (no leading dot).
143
+ const cursorMcp = DEFAULT_MCP_FILENAME.cursor;
144
+ const dottedMcp = resolve(sourceRoot, ".mcp.json");
145
+ if (cursorMcp && existsSync(dottedMcp)) {
146
+ cpSync(dottedMcp, join(targetRoot, cursorMcp), { force: true });
147
+ rmSync(join(targetRoot, ".mcp.json"), { force: true });
148
+ }
149
+ }
84
150
  writeJson(join(targetRoot, platformDir, "plugin.json"), manifest);
85
151
  }
86
152
  /**
@@ -346,6 +412,10 @@ export function installClaudePluginBundle(options) {
346
412
  const marketplaceDir = join(claudeHome, "plugins", "marketplaces", marketplaceName);
347
413
  const installedPath = join(marketplaceDir, "plugins", name);
348
414
  projectBundle(options.pluginRoot, installedPath, "claude", claudeManifest, ".claude-plugin");
415
+ // Claude discovers a directory marketplace's plugins from
416
+ // <marketplaceDir>/.claude-plugin/marketplace.json. Add/refresh this plugin's
417
+ // entry (mirrors the codex marketplace.json maintenance).
418
+ upsertClaudeMarketplaceEntry(marketplaceDir, marketplaceName, name, stringField(claudeManifest, "description"));
349
419
  registerLocalMarketplace(claudeHome, marketplaceName, marketplaceDir);
350
420
  return {
351
421
  name,
@@ -373,9 +443,11 @@ export function claudePluginStatus(claudeHome, pluginName, marketplaceName = "en
373
443
  const knownMarketplaces = readKnownMarketplaces(claudeHome);
374
444
  const installedPath = claudeInstalledPluginPath(claudeHome, marketplaceName, pluginName);
375
445
  const manifest = existsSync(installedPath) ? readClaudePluginManifest(installedPath) : null;
446
+ const enabledPlugins = readEnabledPlugins(claudeHome);
376
447
  return {
377
448
  name: pluginName,
378
449
  installed: existsSync(installedPath),
450
+ enabled: Boolean(enabledPlugins[`${pluginName}@${marketplaceName}`]),
379
451
  manifest,
380
452
  marketplaceName,
381
453
  marketplaceDir,
@@ -387,6 +459,7 @@ export function claudePluginStatus(claudeHome, pluginName, marketplaceName = "en
387
459
  export function runClaudePluginsDoctor(claudeHome = defaultClaudeHome(), marketplaceName = "enact-os-plugins") {
388
460
  const marketplaceDir = claudeMarketplaceDir(claudeHome, marketplaceName);
389
461
  const knownMarketplaces = readKnownMarketplaces(claudeHome);
462
+ const enabledPlugins = readEnabledPlugins(claudeHome);
390
463
  const installedPluginsDir = join(marketplaceDir, "plugins");
391
464
  const installedPlugins = existsSync(installedPluginsDir)
392
465
  ? readdirSync(installedPluginsDir, { withFileTypes: true })
@@ -407,6 +480,10 @@ export function runClaudePluginsDoctor(claudeHome = defaultClaudeHome(), marketp
407
480
  marketplaceRegistered: Boolean(knownMarketplaces[marketplaceName]),
408
481
  marketplacePlugins: installedPlugins.slice().sort(),
409
482
  installedPlugins: installedPlugins.sort(),
483
+ enabledPlugins: Object.entries(enabledPlugins)
484
+ .filter(([pluginId, enabled]) => enabled && pluginId.endsWith(`@${marketplaceName}`))
485
+ .map(([pluginId]) => pluginId.slice(0, -(`@${marketplaceName}`).length))
486
+ .sort(),
410
487
  warnings,
411
488
  };
412
489
  }
@@ -525,6 +602,9 @@ export function uninstallClaudePluginBundle(name, options = {}) {
525
602
  rmSync(installedPath, { recursive: true, force: true });
526
603
  removedPaths.push(installedPath);
527
604
  }
605
+ // Remove this plugin's entry from the marketplace.json (leave the file, the
606
+ // marketplace registration, and other plugin entries intact).
607
+ removeClaudeMarketplaceEntry(marketplaceDir, mktName, name);
528
608
  return { name, removedPaths, noop };
529
609
  }
530
610
  /**