@amsterdamdatalabs/enact-extensions 0.1.0 → 0.1.3

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 (245) hide show
  1. package/README.md +96 -21
  2. package/dist/index.d.ts +5 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/install.d.ts +171 -1
  7. package/dist/install.d.ts.map +1 -1
  8. package/dist/install.js +402 -49
  9. package/dist/install.js.map +1 -1
  10. package/dist/internal/codex.d.ts.map +1 -1
  11. package/dist/internal/codex.js +7 -1
  12. package/dist/internal/codex.js.map +1 -1
  13. package/dist/internal/platform.d.ts +8 -0
  14. package/dist/internal/platform.d.ts.map +1 -1
  15. package/dist/internal/platform.js +46 -2
  16. package/dist/internal/platform.js.map +1 -1
  17. package/dist/provision.d.ts +30 -0
  18. package/dist/provision.d.ts.map +1 -0
  19. package/dist/provision.js +202 -0
  20. package/dist/provision.js.map +1 -0
  21. package/dist/validate/index.d.ts +44 -0
  22. package/dist/validate/index.d.ts.map +1 -1
  23. package/dist/validate/index.js +157 -0
  24. package/dist/validate/index.js.map +1 -1
  25. package/extensions/cmux/.agents/plugin.json +37 -0
  26. package/extensions/cmux/skills/cmux/SKILL.md +82 -0
  27. package/extensions/cmux/skills/cmux/agents/openai.yaml +4 -0
  28. package/extensions/cmux/skills/cmux/references/handles-and-identify.md +35 -0
  29. package/extensions/cmux/skills/cmux/references/panes-surfaces.md +37 -0
  30. package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +23 -0
  31. package/extensions/cmux/skills/cmux/references/windows-workspaces.md +31 -0
  32. package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +122 -0
  33. package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +4 -0
  34. package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +66 -0
  35. package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +45 -0
  36. package/extensions/cmux/skills/cmux-workspace/SKILL.md +93 -0
  37. package/extensions/dev-state/.agents/plugin.json +35 -0
  38. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +194 -0
  39. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +4 -0
  40. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +130 -0
  41. package/extensions/devops/.agents/plugin.json +36 -0
  42. package/extensions/devops/skills/azure-devops-cli/SKILL.md +431 -0
  43. package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +4 -0
  44. package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +217 -0
  45. package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +4 -0
  46. package/extensions/enact-context/.agents/plugin.json +40 -0
  47. package/extensions/enact-context/.mcp.json +8 -0
  48. package/extensions/enact-context/README.md +25 -0
  49. package/extensions/enact-context/assets/icon.png +0 -0
  50. package/extensions/enact-context/assets/logo.png +0 -0
  51. package/extensions/enact-context/hooks/hooks.json +115 -0
  52. package/extensions/enact-context/skills/enact-context/SKILL.md +149 -0
  53. package/extensions/enact-context/skills/enact-context/scripts/install.sh +69 -0
  54. package/extensions/enact-factory/.agents/plugin.json +42 -0
  55. package/extensions/enact-factory/.mcp.json +8 -0
  56. package/extensions/enact-factory/assets/icon.png +0 -0
  57. package/extensions/enact-factory/assets/logo.png +0 -0
  58. package/extensions/enact-factory/hooks/user-prompt-submit.mjs +67 -0
  59. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +167 -0
  60. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +22 -0
  61. package/extensions/enact-operator/.agents/plugin.json +57 -0
  62. package/extensions/enact-operator/.app.json +3 -0
  63. package/extensions/enact-operator/.mcp.json +10 -0
  64. package/extensions/enact-operator/_taxonomy.md +86 -0
  65. package/extensions/enact-operator/agents/README.md +5 -0
  66. package/extensions/enact-operator/agents/architect.toml +25 -0
  67. package/extensions/enact-operator/agents/code-reviewer.toml +24 -0
  68. package/extensions/enact-operator/agents/critic.toml +30 -0
  69. package/extensions/enact-operator/agents/executor.toml +24 -0
  70. package/extensions/enact-operator/agents/explore.toml +23 -0
  71. package/extensions/enact-operator/agents/planner.toml +24 -0
  72. package/extensions/enact-operator/agents/verifier.toml +24 -0
  73. package/extensions/enact-operator/assets/icon.png +0 -0
  74. package/extensions/enact-operator/assets/logo.png +0 -0
  75. package/extensions/enact-operator/commands/doctor.md +39 -0
  76. package/extensions/enact-operator/commands/setup.md +51 -0
  77. package/extensions/enact-operator/hooks/hooks.json +146 -0
  78. package/extensions/enact-operator/skills/_variants.md +44 -0
  79. package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +50 -0
  80. package/extensions/enact-operator/skills/analyze/SKILL.md +91 -0
  81. package/extensions/enact-operator/skills/ask/SKILL.md +47 -0
  82. package/extensions/enact-operator/skills/autopilot/SKILL.md +170 -0
  83. package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +79 -0
  84. package/extensions/enact-operator/skills/cancel/SKILL.md +99 -0
  85. package/extensions/enact-operator/skills/configure-notifications/SKILL.md +77 -0
  86. package/extensions/enact-operator/skills/deep-interview/SKILL.md +80 -0
  87. package/extensions/enact-operator/skills/doctor/SKILL.md +48 -0
  88. package/extensions/enact-operator/skills/hud/SKILL.md +49 -0
  89. package/extensions/enact-operator/skills/hyperplan/SKILL.md +47 -0
  90. package/extensions/enact-operator/skills/plan/SKILL.md +78 -0
  91. package/extensions/enact-operator/skills/ralph/SKILL.md +201 -0
  92. package/extensions/enact-operator/skills/ralph/gemini.md +18 -0
  93. package/extensions/enact-operator/skills/ralplan/SKILL.md +151 -0
  94. package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +45 -0
  95. package/extensions/enact-operator/skills/research/SKILL.md +74 -0
  96. package/extensions/enact-operator/skills/review/SKILL.md +58 -0
  97. package/extensions/enact-operator/skills/security-research/SKILL.md +54 -0
  98. package/extensions/enact-operator/skills/setup/SKILL.md +91 -0
  99. package/extensions/enact-operator/skills/setup/scripts/install.sh +50 -0
  100. package/extensions/enact-operator/skills/skill/SKILL.md +82 -0
  101. package/extensions/enact-operator/skills/tdd/SKILL.md +59 -0
  102. package/extensions/enact-operator/skills/team/SKILL.md +199 -0
  103. package/extensions/enact-operator/skills/trace/SKILL.md +41 -0
  104. package/extensions/enact-operator/skills/ultragoal/SKILL.md +99 -0
  105. package/extensions/enact-operator/skills/ultraqa/SKILL.md +113 -0
  106. package/extensions/enact-operator/skills/ultrawork/SKILL.md +145 -0
  107. package/extensions/enact-operator/skills/ultrawork/planner.md +28 -0
  108. package/extensions/enact-operator/skills/wiki/SKILL.md +41 -0
  109. package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +51 -0
  110. package/extensions/enact-wiki/.agents/plugin.json +42 -0
  111. package/extensions/enact-wiki/.mcp.json +15 -0
  112. package/extensions/enact-wiki/README.md +44 -0
  113. package/extensions/enact-wiki/assets/icon.png +0 -0
  114. package/extensions/enact-wiki/assets/logo.png +0 -0
  115. package/extensions/enact-wiki/skills/document-parser/SKILL.md +17 -0
  116. package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +60 -0
  117. package/extensions/enact-wiki/skills/document-parser/skill.json +9 -0
  118. package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +30 -0
  119. package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +62 -0
  120. package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +34 -0
  121. package/extensions/enact-wiki/skills/enact-wiki/references/query.md +59 -0
  122. package/extensions/enact-wiki/skills/search-lab/SKILL.md +57 -0
  123. package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +23 -0
  124. package/{plugins/net-revenue-management/.codex-plugin → extensions/net-revenue-management/.agents}/plugin.json +10 -6
  125. package/extensions/plugin-dev/.agents/plugin.json +42 -0
  126. package/extensions/plugin-dev/.mcp.json +3 -0
  127. package/extensions/plugin-dev/agents/agent-creator.md +199 -0
  128. package/extensions/plugin-dev/agents/plugin-validator.md +91 -0
  129. package/extensions/plugin-dev/agents/skill-reviewer.md +212 -0
  130. package/extensions/plugin-dev/commands/_archive/create-marketplace.md +427 -0
  131. package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +12 -0
  132. package/extensions/plugin-dev/commands/create-plugin.md +498 -0
  133. package/extensions/plugin-dev/commands/start.md +81 -0
  134. package/extensions/plugin-dev/hooks/hooks.json +3 -0
  135. package/extensions/plugin-dev/skills/agent-development/SKILL.md +641 -0
  136. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +250 -0
  137. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +461 -0
  138. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +246 -0
  139. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +216 -0
  140. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +226 -0
  141. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +464 -0
  142. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +474 -0
  143. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +176 -0
  144. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +227 -0
  145. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +227 -0
  146. package/extensions/plugin-dev/skills/command-development/SKILL.md +763 -0
  147. package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +612 -0
  148. package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +527 -0
  149. package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +762 -0
  150. package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +769 -0
  151. package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +508 -0
  152. package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +966 -0
  153. package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +943 -0
  154. package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +637 -0
  155. package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +191 -0
  156. package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +447 -0
  157. package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +723 -0
  158. package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +234 -0
  159. package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +160 -0
  160. package/extensions/plugin-dev/skills/hook-development/SKILL.md +861 -0
  161. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +55 -0
  162. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +57 -0
  163. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +48 -0
  164. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +871 -0
  165. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +145 -0
  166. package/extensions/plugin-dev/skills/hook-development/references/migration.md +392 -0
  167. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +430 -0
  168. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +181 -0
  169. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +153 -0
  170. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +276 -0
  171. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  172. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +775 -0
  173. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +20 -0
  174. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +19 -0
  175. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +38 -0
  176. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +26 -0
  177. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +601 -0
  178. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +190 -0
  179. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +572 -0
  180. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +623 -0
  181. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +222 -0
  182. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +705 -0
  183. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +774 -0
  184. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +83 -0
  185. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +611 -0
  186. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +289 -0
  187. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +592 -0
  188. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +233 -0
  189. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +193 -0
  190. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +625 -0
  191. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +116 -0
  192. package/extensions/plugin-dev/skills/skill-development/SKILL.md +564 -0
  193. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +465 -0
  194. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +167 -0
  195. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +111 -0
  196. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +225 -0
  197. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +39 -0
  198. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +379 -0
  199. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +210 -0
  200. package/package.json +8 -11
  201. package/scripts/enact-extensions.mjs +823 -21
  202. package/scripts/hooks/session-start-drift-check.mjs +58 -0
  203. package/scripts/lib/build-index.mjs +50 -0
  204. package/scripts/lib/bundle-hash.mjs +137 -0
  205. package/scripts/lib/hooks.mjs +741 -0
  206. package/scripts/lib/ledger.mjs +163 -0
  207. package/scripts/lib/list-bundles.mjs +70 -0
  208. package/scripts/lib/outdated.mjs +144 -0
  209. package/scripts/lib/provision-mcp.mjs +16 -0
  210. package/scripts/lib/resolve-bundle.mjs +121 -0
  211. package/scripts/lib/run-install.mjs +402 -38
  212. package/scripts/lib/run-prune.mjs +73 -0
  213. package/scripts/lib/run-sync.mjs +9 -1
  214. package/scripts/lib/run-uninstall.mjs +244 -0
  215. package/scripts/lib/run-update.mjs +152 -0
  216. package/scripts/lib/run-validate.mjs +21 -18
  217. package/scripts/lib/serve.mjs +472 -0
  218. package/scripts/postinstall.mjs +63 -0
  219. package/scripts/setup-enact-context.sh +2 -2
  220. package/scripts/version-bump.sh +463 -0
  221. package/spec/codex.json +1 -11
  222. package/spec/index.json +59 -0
  223. package/web/assets/README.md +111 -0
  224. package/web/assets/logo-full.png +0 -0
  225. package/web/assets/logo-slim.png +0 -0
  226. package/web/assets/tokens/base.css +45 -0
  227. package/web/assets/tokens/colors.css +248 -0
  228. package/web/assets/tokens/effects.css +24 -0
  229. package/web/assets/tokens/fonts.css +8 -0
  230. package/web/assets/tokens/index.css +18 -0
  231. package/web/assets/tokens/spacing.css +50 -0
  232. package/web/index.html +1188 -0
  233. package/.agents/plugins/marketplace.json +0 -20
  234. package/catalog/enact-context.json +0 -9
  235. package/catalog/enact-factory.json +0 -7
  236. package/catalog/enact-operator.json +0 -7
  237. package/catalog/enact-wiki.json +0 -7
  238. package/catalog/net-revenue-management.json +0 -8
  239. package/scripts/rename-supervisor-to-operator.pl +0 -66
  240. package/scripts/sync-manifests.mjs +0 -23
  241. package/scripts/validate-catalog.mjs +0 -37
  242. package/scripts/validate-plugin.mjs +0 -10
  243. /package/{plugins → extensions}/net-revenue-management/.mcp.json +0 -0
  244. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -0
  245. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -0
package/README.md CHANGED
@@ -3,24 +3,24 @@
3
3
  Multi-surface **plugin manifest** tooling for Enact: schemas, validation, sync, and the plugin-dev toolkit for ENACT-native bundles plus derived Claude Code, Codex, and Cursor projections.
4
4
 
5
5
  **Repository:** https://dev.azure.com/amsterdamdatalabs/Enact/_git/enact-extensions
6
- **Package:** `@enact/extensions`
6
+ **Package:** `@amsterdamdatalabs/enact-extensions`
7
7
  **CLI:** `enact-extensions`
8
8
 
9
9
  ## Scope
10
10
 
11
- This repo is the manifest tooling package (`@enact/extensions`) plus the bundled `plugin-dev` toolkit under `extensions/`. It owns:
11
+ This repo is the manifest tooling package (`@amsterdamdatalabs/enact-extensions`) plus a set of self-contained plugin bundles under `extensions/`. It owns:
12
12
 
13
- - `spec/` — JSON schemas (canonical: `enact.json`) + per-host schemas (`claude-plugin.json`, `codex-plugin.json`, `cursor-plugin.json`)
14
- - `src/` — `create/*` and `validate/*` TypeScript library
15
- - `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `install`, path defaults to cwd)
16
- - `extensions/`distributable `plugin-dev` bundle (plugin-development skills, agents, commands)
17
- - `catalog/` — registered sibling bundle roots for `validate:catalog` (ADR 0010)
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
+ - `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)
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
+ - `web/` — vendored ADL design assets (`web/assets/tokens/*.css`, `web/assets/logo-*.png`) + `web/index.html` (the management UI served by `serve`)
18
18
 
19
- It does **not** ship product plugins. The consumer product plugins `enact-context`, `enact-factory`, `enact-operator`, `enact-wiki` live as **sibling top-level submodules of `enact-os/`**, each owning its own `extensions/` bundle. They are listed in `catalog/` so this repo's `validate:catalog` script can audit them from a single place.
19
+ Distribution is **install-only**: there is no pre-built marketplace artifact and no central registry. `enact-extensions install <bundle>` projects the per-surface manifest from `.agents/plugin.json` on the fly, copies the bundle into the target home, and enables it.
20
20
 
21
21
  ## Surface Contract
22
22
 
23
- `extensions/.agents/plugin.json` is the canonical source manifest. `enact-extensions sync` derives `.claude-plugin/`, `.codex-plugin/`, and `.cursor-plugin/` from that source.
23
+ Each `extensions/<plugin>/.agents/plugin.json` is the canonical source manifest. `enact-extensions sync` (and `install`) derive `.claude-plugin/`, `.codex-plugin/`, and `.cursor-plugin/` from that source — those projections are generated, never committed.
24
24
 
25
25
  Author skills, commands, and hooks so they are valid on **all projected surfaces by default**:
26
26
 
@@ -44,45 +44,120 @@ This repo has no submodules of its own. Sibling product packages are submoduled
44
44
  ```bash
45
45
  npm install
46
46
  npm run build
47
- npm run validate # validate this repo's own extensions/ bundle
48
- npm run sync # regenerate host manifests for extensions/ from .agents/plugin.json
49
- npm run validate:catalog
47
+ npm run validate # validate the plugin-dev bundle
48
+ npm run sync # regenerate host manifests for plugin-dev from .agents/plugin.json
50
49
  ```
51
50
 
52
- To validate a sibling product bundle (e.g. the operator package at `../enact-operator/extensions`):
51
+ To validate, install, list, or index any bundle:
53
52
 
54
53
  ```bash
55
54
  npm run build
56
- node scripts/enact-extensions.mjs validate ../enact-operator/extensions
55
+ node scripts/enact-extensions.mjs validate extensions/net-revenue-management
56
+ node scripts/enact-extensions.mjs install extensions/net-revenue-management --platform enact --global
57
+ node scripts/enact-extensions.mjs install extensions/net-revenue-management --platform enact --local
58
+
59
+ # Install by bare name (resolves from extensions/ tree)
60
+ node scripts/enact-extensions.mjs install net-revenue-management --platform enact --global
61
+
62
+ # Install to multiple platforms at once
63
+ node scripts/enact-extensions.mjs install net-revenue-management --platform all
64
+ node scripts/enact-extensions.mjs install net-revenue-management --platform claude,cursor
65
+
66
+ # List available bundles
67
+ node scripts/enact-extensions.mjs list
68
+ node scripts/enact-extensions.mjs list --json
69
+
70
+ # Generate local discovery index (gitignored artifact; spec/index.json is the committed schema)
71
+ node scripts/enact-extensions.mjs index
72
+ node scripts/enact-extensions.mjs index --stdout
73
+
74
+ # Uninstall a plugin (full remove: files + marketplace entry + config.toml entry)
75
+ node scripts/enact-extensions.mjs uninstall net-revenue-management --platform enact
76
+ node scripts/enact-extensions.mjs uninstall net-revenue-management --platform all
77
+
78
+ # View the install ledger (most recent first)
79
+ node scripts/enact-extensions.mjs log
80
+ node scripts/enact-extensions.mjs log --json
81
+
82
+ # Check freshness drift (installed vs canonical source, per plugin+surface)
83
+ node scripts/enact-extensions.mjs outdated
84
+ node scripts/enact-extensions.mjs outdated --json
85
+
86
+ # Refresh outdated plugins (ledger-driven, per-surface)
87
+ node scripts/enact-extensions.mjs update --all
88
+ node scripts/enact-extensions.mjs update net-revenue-management
89
+ node scripts/enact-extensions.mjs update --all --dry-run
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
95
+
96
+ # Start the localhost management UI + API
97
+ node scripts/enact-extensions.mjs serve
98
+ node scripts/enact-extensions.mjs serve --port 43217 --open
57
99
  ```
58
100
 
59
101
  ## CLI (`enact-extensions`)
60
102
 
61
- Published from `@enact/extensions`. Path defaults to **cwd**:
103
+ Published from `@amsterdamdatalabs/enact-extensions`. Path defaults to **cwd**:
62
104
 
63
105
  ```bash
64
- cd ../enact-operator/extensions
106
+ cd extensions/enact-factory
65
107
  enact-extensions validate
66
108
  enact-extensions sync
67
109
  ```
68
110
 
111
+ Subcommands: `validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve` | `hooks`.
112
+
69
113
  Link locally:
70
114
 
71
115
  ```bash
72
116
  npm run build && npm link
73
117
  ```
74
118
 
119
+ ## Freshness
120
+
121
+ The freshness loop keeps installed plugins in sync with their canonical source without requiring manual tracking:
122
+
123
+ 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
+ 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
+ 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.
127
+
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.
129
+
130
+ ## Web UI (`serve`)
131
+
132
+ `enact-extensions serve` starts a dependency-free localhost management UI at `http://127.0.0.1:43217` (default port). From the UI you can browse all available extensions and one-click install or uninstall them to any platform surface. Pass `--open` to launch the browser automatically.
133
+
134
+ The server binds to `127.0.0.1` only — it is never reachable from other machines. API routes: `GET /` (UI), `GET /assets/*` (static assets), `GET /api/index` (discovery index), `GET /api/installed` (current installs), `POST /api/install`, `POST /api/uninstall`.
135
+
136
+ ## Install ledger
137
+
138
+ Every install and uninstall is appended to a single global JSONL file at `~/.enact/extensions/ledger.jsonl`. Each record contains `{ts, action, name, version, platform, scope, home, path, hash}`. The `hash` field is a sha256 content hash of the canonical bundle at install time — this is the drift detector used by `outdated` to catch content changes even without a version bump. The ledger is best-effort: a write failure never fails the install/uninstall operation. View it with:
139
+
140
+ ```bash
141
+ enact-extensions log # human-readable, newest first
142
+ enact-extensions log --json # raw JSON array
143
+ ```
144
+
75
145
  ## Layout
76
146
 
77
147
  ```text
78
- enact-extensions/ # @enact/extensions package root
79
- ├── src/ spec/ scripts/ # manifest library + CLI
80
- ├── extensions/ # plugin-dev toolkit bundle (this repo's own plugin)
81
- └── catalog/ # registered sibling bundle roots (validate:catalog target)
148
+ 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)
150
+ ├── web/ # management UI web/index.html + web/assets/tokens/*.css + web/assets/logo-*.png
151
+ ├── generated/ # gitignored local discovery artifacts (e.g. index.json)
152
+ └── extensions/ # self-contained plugin bundles
153
+ ├── plugin-dev/ # plugin authoring toolkit
154
+ ├── cmux/ devops/ dev-state/ # first-party skill bundles
155
+ ├── enact-context/ enact-factory/ enact-operator/
156
+ └── net-revenue-management/ # product and platform bundles
82
157
  ```
83
158
 
84
159
  ## enact-os integration
85
160
 
86
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.
87
162
 
88
- Skill or manifest changes for a product plugin ship from that product's own `extensions/` bundle (e.g. `enact-operator/extensions/`); validate with `enact-extensions` from inside that bundle. `@enact/extensions` owns manifest tooling only; `enact-factory setup` or `enact-factory plugins delivery` persists the local install scope.
163
+ Host plugin delivery now lives in this repo for the shipped bundles under `extensions/`, including `enact-context`, `enact-factory`, and `enact-operator`. 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.
package/dist/index.d.ts CHANGED
@@ -6,9 +6,11 @@ export { defaultCursorHome } from "./internal/cursor.js";
6
6
  export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PATHS, } from "./internal/platform.js";
7
7
  export { defaultCodexHome, defaultEnactHome, ensureMarketplace, ensureMcpServer, isPluginEnabled, readCodexConfig, readCodexConfigProbe, resolveCodexInstallHomes, removeMcpServer, removePluginConfig, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
8
8
  export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
9
- export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, checkComponentPaths, checkPluginBundleComponentPaths, readManifestFile, } from "./validate/index.js";
9
+ export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, validatePluginBundleFromCanonical, checkComponentPaths, checkPluginBundleComponentPaths, checkPluginBundleComponentPathsFromCanonical, checkHookEvents, assertSupportedHookEvents, SUPPORTED_HOOK_EVENTS, readManifestFile, } from "./validate/index.js";
10
10
  export type { PluginValidationReport } from "./validate/index.js";
11
11
  export type { ScaffoldOptions } from "./create/index.js";
12
- export { installCodexPluginBundle, installPluginBundle, installClaudePluginBundle, installCursorPluginBundle, } from "./install.js";
13
- export type { CodexPluginInstallOptions, CodexPluginInstallResult, MultiCodexPluginInstallOptions, MultiCodexPluginInstallResult, ClaudePluginInstallOptions, ClaudePluginInstallResult, CursorPluginInstallOptions, CursorPluginInstallResult, } from "./install.js";
12
+ 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";
13
+ 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";
14
+ export type { McpServerDefinition, ProvisionExec, ProvisionExecResult, ProvisionMcpOptions, ProvisionMcpResult, } from "./provision.js";
15
+ export { readMcpServers, provisionMcp, summarizeProvision, } from "./provision.js";
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,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,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,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,mBAAmB,EACnB,+BAA+B,EAC/B,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,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ export { defaultCursorHome } from "./internal/cursor.js";
4
4
  export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PATHS, } from "./internal/platform.js";
5
5
  export { defaultCodexHome, defaultEnactHome, ensureMarketplace, ensureMcpServer, isPluginEnabled, readCodexConfig, readCodexConfigProbe, resolveCodexInstallHomes, removeMcpServer, removePluginConfig, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
6
6
  export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
7
- export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, checkComponentPaths, checkPluginBundleComponentPaths, readManifestFile, } from "./validate/index.js";
8
- export { installCodexPluginBundle, installPluginBundle, installClaudePluginBundle, installCursorPluginBundle, } from "./install.js";
7
+ export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, validatePluginBundleFromCanonical, checkComponentPaths, checkPluginBundleComponentPaths, checkPluginBundleComponentPathsFromCanonical, checkHookEvents, assertSupportedHookEvents, SUPPORTED_HOOK_EVENTS, readManifestFile, } from "./validate/index.js";
8
+ 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";
9
+ export { readMcpServers, provisionMcp, summarizeProvision, } from "./provision.js";
9
10
  //# 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,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,mBAAmB,EACnB,+BAA+B,EAC/B,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,cAAc,CAAC"}
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,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"}
package/dist/install.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { SyncResult } from "./internal/types.js";
1
+ import type { PluginManifest, SyncResult } from "./internal/types.js";
2
+ import type { ProvisionExec, ProvisionMcpResult } from "./provision.js";
2
3
  export interface CodexPluginInstallOptions {
3
4
  pluginRoot: string;
4
5
  codexHome?: string;
@@ -26,6 +27,41 @@ export interface MultiCodexPluginInstallResult {
26
27
  codexHomes: string[];
27
28
  results: CodexPluginInstallResult[];
28
29
  }
30
+ export interface CodexPluginDoctorReport {
31
+ configPlugins: string[];
32
+ marketplaceConfigured: boolean;
33
+ marketplaceRoot: string;
34
+ marketplacePath: string;
35
+ marketplacePlugins: string[];
36
+ installedPlugins: string[];
37
+ warnings: string[];
38
+ }
39
+ export interface CodexInstalledPluginStatus {
40
+ name: string;
41
+ enabled: boolean;
42
+ installed: boolean;
43
+ cachedVersions: string[];
44
+ manifest: PluginManifest | null;
45
+ pluginConfigKey: string;
46
+ marketplaceName: string;
47
+ installedPluginPath: string;
48
+ marketplacePluginPath: string;
49
+ cacheRoot: string;
50
+ }
51
+ export interface CodexPluginInstallWithProvisionOptions extends CodexPluginInstallOptions {
52
+ noProvision?: boolean;
53
+ provisionExec?: ProvisionExec;
54
+ }
55
+ export interface CodexPluginInstallWithProvisionResult extends CodexPluginInstallResult {
56
+ provision: ProvisionMcpResult[];
57
+ }
58
+ export interface MultiCodexPluginInstallWithProvisionOptions extends MultiCodexPluginInstallOptions {
59
+ noProvision?: boolean;
60
+ provisionExec?: ProvisionExec;
61
+ }
62
+ export interface MultiCodexPluginInstallWithProvisionResult extends MultiCodexPluginInstallResult {
63
+ provision: ProvisionMcpResult[];
64
+ }
29
65
  export interface ClaudePluginInstallOptions {
30
66
  pluginRoot: string;
31
67
  claudeHome?: string;
@@ -41,6 +77,32 @@ export interface ClaudePluginInstallResult {
41
77
  refreshedPaths: string[];
42
78
  syncResults: SyncResult[];
43
79
  }
80
+ export interface ClaudePluginDoctorReport {
81
+ marketplaceName: string;
82
+ marketplaceDir: string;
83
+ knownMarketplacesPath: string;
84
+ marketplaceRegistered: boolean;
85
+ marketplacePlugins: string[];
86
+ installedPlugins: string[];
87
+ warnings: string[];
88
+ }
89
+ export interface ClaudeInstalledPluginStatus {
90
+ name: string;
91
+ installed: boolean;
92
+ manifest: PluginManifest | null;
93
+ marketplaceName: string;
94
+ marketplaceDir: string;
95
+ installedPluginPath: string;
96
+ knownMarketplaceRegistered: boolean;
97
+ knownMarketplacesPath: string;
98
+ }
99
+ export interface ClaudePluginInstallWithProvisionOptions extends ClaudePluginInstallOptions {
100
+ noProvision?: boolean;
101
+ provisionExec?: ProvisionExec;
102
+ }
103
+ export interface ClaudePluginInstallWithProvisionResult extends ClaudePluginInstallResult {
104
+ provision: ProvisionMcpResult[];
105
+ }
44
106
  export interface CursorPluginInstallOptions {
45
107
  pluginRoot: string;
46
108
  cursorHome?: string;
@@ -53,8 +115,116 @@ export interface CursorPluginInstallResult {
53
115
  refreshedPaths: string[];
54
116
  syncResults: SyncResult[];
55
117
  }
118
+ export declare function codexMarketplaceRoot(codexHome: string, marketplaceName?: string): string;
119
+ export declare function codexMarketplacePath(codexHome: string, marketplaceName?: string): string;
120
+ export declare function codexMarketplacePluginPath(codexHome: string, marketplaceName: string, pluginName: string): string;
121
+ export declare function codexInstalledPluginPath(codexHome: string, pluginName: string): string;
122
+ export declare function codexPluginCachePath(codexHome: string, marketplaceName: string, pluginName: string, version: string): string;
123
+ export declare function codexPluginCacheRoot(codexHome: string, marketplaceName: string, pluginName: string): string;
124
+ export declare function readCodexPluginManifest(pluginRoot: string): PluginManifest | null;
125
+ export declare function claudeMarketplaceDir(claudeHome: string, marketplaceName?: string): string;
126
+ export declare function claudeInstalledPluginPath(claudeHome: string, marketplaceName: string, pluginName: string): string;
127
+ export declare function claudeKnownMarketplacesPath(claudeHome: string): string;
128
+ export declare function readClaudePluginManifest(pluginRoot: string): PluginManifest | null;
56
129
  export declare function installCodexPluginBundle(options: CodexPluginInstallOptions): CodexPluginInstallResult;
57
130
  export declare function installPluginBundle(options: MultiCodexPluginInstallOptions): MultiCodexPluginInstallResult;
131
+ export declare function installCodexPluginBundleWithProvision(options: CodexPluginInstallWithProvisionOptions): CodexPluginInstallWithProvisionResult;
132
+ export declare function installPluginBundleWithProvision(options: MultiCodexPluginInstallWithProvisionOptions): MultiCodexPluginInstallWithProvisionResult;
133
+ export declare function codexPluginStatus(codexHome: string, pluginName: string, marketplaceName?: string): CodexInstalledPluginStatus;
134
+ export declare function setInstalledCodexPluginEnabled(codexHome: string, pluginName: string, enabled: boolean, marketplaceName?: string): CodexInstalledPluginStatus;
135
+ export declare function runCodexPluginsDoctor(codexHome?: string, marketplaceName?: string): CodexPluginDoctorReport;
58
136
  export declare function installClaudePluginBundle(options: ClaudePluginInstallOptions): ClaudePluginInstallResult;
137
+ export declare function installClaudePluginBundleWithProvision(options: ClaudePluginInstallWithProvisionOptions): ClaudePluginInstallWithProvisionResult;
138
+ export declare function claudePluginStatus(claudeHome: string, pluginName: string, marketplaceName?: string): ClaudeInstalledPluginStatus;
139
+ export declare function runClaudePluginsDoctor(claudeHome?: string, marketplaceName?: string): ClaudePluginDoctorReport;
59
140
  export declare function installCursorPluginBundle(options: CursorPluginInstallOptions): CursorPluginInstallResult;
141
+ export interface CodexPluginUninstallOptions {
142
+ codexHome?: string;
143
+ marketplaceName?: string;
144
+ }
145
+ export interface CodexPluginUninstallResult {
146
+ name: string;
147
+ marketplaceName: string;
148
+ removedPaths: string[];
149
+ /** true when nothing was installed (idempotent no-op) */
150
+ noop: boolean;
151
+ }
152
+ export interface ClaudePluginUninstallOptions {
153
+ claudeHome?: string;
154
+ marketplaceName?: string;
155
+ }
156
+ export interface ClaudePluginUninstallResult {
157
+ name: string;
158
+ removedPaths: string[];
159
+ noop: boolean;
160
+ }
161
+ export interface CursorPluginUninstallOptions {
162
+ cursorHome?: string;
163
+ }
164
+ export interface CursorPluginUninstallResult {
165
+ name: string;
166
+ removedPaths: string[];
167
+ noop: boolean;
168
+ }
169
+ export interface SharedPluginUninstallOptions {
170
+ sharedHome?: string;
171
+ }
172
+ export interface SharedPluginUninstallResult {
173
+ name: string;
174
+ installedSkillsPath: string;
175
+ removedPaths: string[];
176
+ noop: boolean;
177
+ }
178
+ /**
179
+ * Fully uninstall a Codex/Enact plugin from the given home, reversing installCodexPluginBundle:
180
+ * - removes <home>/plugins/<name>/ (installed dir)
181
+ * - removes <home>/marketplaces/<marketplace>/plugins/<name>/ (marketplace plugin dir)
182
+ * - removes <home>/plugins/cache/<marketplace>/<name>/ (cache dir)
183
+ * - removes the plugin's entry from marketplace.json (preserves other entries + marketplace reg)
184
+ * - removes [plugins."<name>@<marketplace>"] from config.toml (preserves [marketplaces.*] etc.)
185
+ */
186
+ export declare function uninstallCodexPluginBundle(name: string, options?: CodexPluginUninstallOptions): CodexPluginUninstallResult;
187
+ /**
188
+ * Fully uninstall a Claude plugin, reversing installClaudePluginBundle:
189
+ * - removes <claudeHome>/plugins/marketplaces/<marketplace>/plugins/<name>/
190
+ * Note: the marketplace registration in known_marketplaces.json is LEFT intact
191
+ * (the marketplace itself persists even after its last plugin is removed).
192
+ */
193
+ export declare function uninstallClaudePluginBundle(name: string, options?: ClaudePluginUninstallOptions): ClaudePluginUninstallResult;
194
+ /**
195
+ * Fully uninstall a Cursor plugin, reversing installCursorPluginBundle:
196
+ * - removes <cursorHome>/plugins/local/<name>/
197
+ */
198
+ export declare function uninstallCursorPluginBundle(name: string, options?: CursorPluginUninstallOptions): CursorPluginUninstallResult;
199
+ export interface SharedPluginInstallOptions {
200
+ pluginRoot: string;
201
+ /** Explicit shared home. Defaults to ~/.agents (global) or ./.agents (local). */
202
+ sharedHome?: string;
203
+ }
204
+ export interface SharedPluginInstallResult {
205
+ name: string;
206
+ version: string;
207
+ /** Absolute path to the installed skills directory: <sharedHome>/.agents/skills/<name> */
208
+ installedSkillsPath: string;
209
+ }
210
+ /**
211
+ * Default global shared home base. The convention is that skills live at
212
+ * `~/.agents/skills/<plugin>/`, so this returns `homedir()` and the install
213
+ * function appends `.agents/skills/<name>`.
214
+ *
215
+ * Pass an explicit `sharedHome` to override (useful in tests or local scope).
216
+ */
217
+ export declare function defaultSharedHome(): string;
218
+ /**
219
+ * Install the bundle's skills tree into <sharedHome>/.agents/skills/<plugin>/.
220
+ * Does NOT write a marketplace entry, config.toml, or any platform-specific
221
+ * manifest — this is a pure host-neutral skills drop that any host reading
222
+ * `.agents/skills/` (Codex, Cursor, Gemini, etc.) can pick up.
223
+ */
224
+ export declare function installSharedPluginBundle(options: SharedPluginInstallOptions): SharedPluginInstallResult;
225
+ /**
226
+ * Uninstall a shared plugin by removing its skills directory.
227
+ * Reverses installSharedPluginBundle.
228
+ */
229
+ export declare function uninstallSharedPluginBundle(name: string, options?: SharedPluginUninstallOptions): SharedPluginUninstallResult;
60
230
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAkB,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AAYtF,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,8BAA+B,SAAQ,yBAAyB;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,wBAAwB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AA0KD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,wBAAwB,CAoDrG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,8BAA8B,GAAG,6BAA6B,CAY1G;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CA2BxG;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CAsBxG"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}