@amsterdamdatalabs/enact-extensions 0.1.42 → 0.1.48

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 (596) hide show
  1. package/README.md +67 -108
  2. package/bundled-extensions.json +3 -0
  3. package/dist/create/claude.d.ts.map +1 -1
  4. package/dist/create/claude.js +1 -1
  5. package/dist/create/claude.js.map +1 -1
  6. package/dist/create/codex.d.ts.map +1 -1
  7. package/dist/create/codex.js +2 -3
  8. package/dist/create/codex.js.map +1 -1
  9. package/dist/create/cursor.d.ts.map +1 -1
  10. package/dist/create/cursor.js +3 -7
  11. package/dist/create/cursor.js.map +1 -1
  12. package/dist/create/enact.d.ts.map +1 -1
  13. package/dist/create/enact.js +2 -0
  14. package/dist/create/enact.js.map +1 -1
  15. package/dist/create/index.d.ts +4 -1
  16. package/dist/create/index.d.ts.map +1 -1
  17. package/dist/create/index.js +9 -3
  18. package/dist/create/index.js.map +1 -1
  19. package/dist/create/kimi.d.ts +16 -0
  20. package/dist/create/kimi.d.ts.map +1 -0
  21. package/dist/create/kimi.js +86 -0
  22. package/dist/create/kimi.js.map +1 -0
  23. package/dist/create/opencode.d.ts +129 -0
  24. package/dist/create/opencode.d.ts.map +1 -0
  25. package/dist/create/opencode.js +689 -0
  26. package/dist/create/opencode.js.map +1 -0
  27. package/dist/index.d.ts +14 -19
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +11 -11
  30. package/dist/index.js.map +1 -1
  31. package/dist/internal/agents.d.ts +11 -1
  32. package/dist/internal/agents.d.ts.map +1 -1
  33. package/dist/internal/agents.js +120 -4
  34. package/dist/internal/agents.js.map +1 -1
  35. package/dist/internal/extensions-table.d.ts +87 -0
  36. package/dist/internal/extensions-table.d.ts.map +1 -0
  37. package/dist/internal/extensions-table.js +195 -0
  38. package/dist/internal/extensions-table.js.map +1 -0
  39. package/dist/internal/file-ops.d.ts +36 -0
  40. package/dist/internal/file-ops.d.ts.map +1 -0
  41. package/dist/internal/file-ops.js +89 -0
  42. package/dist/internal/file-ops.js.map +1 -0
  43. package/dist/internal/hooks.d.ts +56 -0
  44. package/dist/internal/hooks.d.ts.map +1 -0
  45. package/dist/internal/hooks.js +128 -0
  46. package/dist/internal/hooks.js.map +1 -0
  47. package/dist/internal/io.d.ts.map +1 -1
  48. package/dist/internal/io.js.map +1 -1
  49. package/dist/internal/json-merge.d.ts +63 -0
  50. package/dist/internal/json-merge.d.ts.map +1 -0
  51. package/dist/internal/json-merge.js +124 -0
  52. package/dist/internal/json-merge.js.map +1 -0
  53. package/dist/internal/lock-ownership.d.ts +41 -0
  54. package/dist/internal/lock-ownership.d.ts.map +1 -0
  55. package/dist/internal/lock-ownership.js +24 -0
  56. package/dist/internal/lock-ownership.js.map +1 -0
  57. package/dist/internal/pick.d.ts.map +1 -1
  58. package/dist/internal/pick.js.map +1 -1
  59. package/dist/internal/platform.d.ts.map +1 -1
  60. package/dist/internal/platform.js +82 -42
  61. package/dist/internal/platform.js.map +1 -1
  62. package/dist/internal/schema.d.ts.map +1 -1
  63. package/dist/internal/schema.js.map +1 -1
  64. package/dist/internal/toml-block.d.ts +59 -0
  65. package/dist/internal/toml-block.d.ts.map +1 -0
  66. package/dist/internal/toml-block.js +113 -0
  67. package/dist/internal/toml-block.js.map +1 -0
  68. package/dist/internal/types.d.ts +2 -1
  69. package/dist/internal/types.d.ts.map +1 -1
  70. package/dist/projection.d.ts +47 -0
  71. package/dist/projection.d.ts.map +1 -0
  72. package/dist/projection.js +180 -0
  73. package/dist/projection.js.map +1 -0
  74. package/dist/validate/index.d.ts +10 -5
  75. package/dist/validate/index.d.ts.map +1 -1
  76. package/dist/validate/index.js +59 -10
  77. package/dist/validate/index.js.map +1 -1
  78. package/dist/validate/kimi.d.ts +3 -0
  79. package/dist/validate/kimi.d.ts.map +1 -0
  80. package/dist/validate/kimi.js +11 -0
  81. package/dist/validate/kimi.js.map +1 -0
  82. package/dist/validate/opencode.d.ts +3 -0
  83. package/dist/validate/opencode.d.ts.map +1 -0
  84. package/dist/validate/opencode.js +11 -0
  85. package/dist/validate/opencode.js.map +1 -0
  86. package/dist/validate/run.d.ts +39 -0
  87. package/dist/validate/run.d.ts.map +1 -0
  88. package/dist/validate/run.js +60 -0
  89. package/dist/validate/run.js.map +1 -0
  90. package/extensions/enact-loop/.agents/plugin.json +12 -8
  91. package/extensions/enact-loop/scripts/validate.mjs +84 -2
  92. package/extensions/enact-loop/skills/enact-loop/SKILL.md +36 -466
  93. package/extensions/enact-loop/skills/enact-loop/references/loop-contract.md +114 -0
  94. package/extensions/enact-loop/skills/loop-budget/SKILL.md +43 -26
  95. package/extensions/enact-loop/skills/loop-intake/SKILL.md +44 -32
  96. package/extensions/enact-repo/.agents/plugin.json +55 -0
  97. package/extensions/enact-repo/.mcp.json +20 -0
  98. package/extensions/enact-repo/README.md +90 -0
  99. package/extensions/enact-repo/hooks/hooks.json +98 -0
  100. package/extensions/enact-repo/lean-ctx/config.toml +35 -0
  101. package/extensions/enact-repo/lean-ctx/layout.toml +5 -0
  102. package/extensions/enact-repo/skills/aca-sandboxes/SKILL.md +53 -0
  103. package/extensions/enact-repo/skills/aca-sandboxes/references/capabilities.md +52 -0
  104. package/extensions/enact-repo/skills/aca-sandboxes/references/install.md +87 -0
  105. package/extensions/enact-repo/skills/aca-sandboxes/references/prerequisites.md +52 -0
  106. package/extensions/enact-repo/skills/aca-sandboxes/references/quickstart.md +164 -0
  107. package/extensions/enact-repo/skills/aca-sandboxes/references/reference-advanced.md +251 -0
  108. package/extensions/enact-repo/skills/aca-sandboxes/references/reference.md +287 -0
  109. package/extensions/enact-repo/skills/aca-sandboxes/references/response-cues.md +71 -0
  110. package/extensions/enact-repo/skills/aca-sandboxes/references/scenarios.md +219 -0
  111. package/extensions/enact-repo/skills/aca-sandboxes/version.json +4 -0
  112. package/extensions/enact-repo/skills/backend-remove-deadcode/SKILL.md +96 -0
  113. package/extensions/enact-repo/skills/cmux-leader/SKILL.md +61 -0
  114. package/extensions/enact-repo/skills/cmux-send/SKILL.md +61 -0
  115. package/extensions/enact-repo/skills/code-review/SKILL.md +100 -0
  116. package/extensions/enact-repo/skills/codebase-design/SKILL.md +98 -0
  117. package/extensions/enact-repo/skills/codebase-design/references/DEEPENING.md +37 -0
  118. package/extensions/enact-repo/skills/codebase-design/references/DESIGN-IT-TWICE.md +44 -0
  119. package/extensions/enact-repo/skills/codebase-design/references/TESTABILITY.md +29 -0
  120. package/extensions/enact-repo/skills/computer-use/SKILL.md +76 -0
  121. package/extensions/enact-repo/skills/debug-issue/SKILL.md +40 -0
  122. package/extensions/enact-repo/skills/diagnosing-bugs/SKILL.md +100 -0
  123. package/extensions/enact-repo/skills/diagnosing-bugs/references/FEEDBACK-LOOP-TACTICS.md +34 -0
  124. package/extensions/enact-repo/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  125. package/extensions/enact-repo/skills/domain-modeling/SKILL.md +86 -0
  126. package/extensions/enact-repo/skills/domain-modeling/references/ADR-FORMAT.md +47 -0
  127. package/extensions/enact-repo/skills/domain-modeling/references/CONTEXT-FORMAT.md +60 -0
  128. package/extensions/enact-repo/skills/explore-codebase/SKILL.md +41 -0
  129. package/extensions/enact-repo/skills/frontend-design/LICENSE.txt +177 -0
  130. package/extensions/enact-repo/skills/frontend-design/SKILL.md +56 -0
  131. package/extensions/enact-repo/skills/grill-me/SKILL.md +20 -0
  132. package/extensions/enact-repo/skills/grill-with-docs/SKILL.md +20 -0
  133. package/extensions/enact-repo/skills/handoff/SKILL.md +28 -0
  134. package/extensions/enact-repo/skills/http-contract-migration/SKILL.md +74 -0
  135. package/extensions/enact-repo/skills/http-contract-migration/references/compatibility-and-gates.md +26 -0
  136. package/extensions/enact-repo/skills/http-contract-migration/references/hexagonal-boundary.md +16 -0
  137. package/extensions/enact-repo/skills/http-contract-migration/references/publication-and-adoption.md +31 -0
  138. package/extensions/enact-repo/skills/http-contract-migration/references/wire-fidelity-and-dto.md +31 -0
  139. package/extensions/enact-repo/skills/implement/SKILL.md +28 -0
  140. package/extensions/enact-repo/skills/improve-codebase-architecture/SKILL.md +80 -0
  141. package/extensions/enact-repo/skills/improve-codebase-architecture/references/HTML-REPORT.md +123 -0
  142. package/extensions/enact-repo/skills/interaction-design/SKILL.md +30 -0
  143. package/extensions/enact-repo/skills/interaction-design/references/Workflow.md +146 -0
  144. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-gsap.md +219 -0
  145. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-native.md +110 -0
  146. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries.md +177 -0
  147. package/extensions/enact-repo/skills/interaction-design/references/interaction-patterns.md +166 -0
  148. package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns-advanced.md +285 -0
  149. package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns.md +254 -0
  150. package/extensions/enact-repo/skills/interaction-design/references/scroll-animations-reveals.md +213 -0
  151. package/extensions/enact-repo/skills/interaction-design/references/scroll-animations.md +208 -0
  152. package/extensions/enact-repo/skills/lean-ctx/SKILL.md +81 -0
  153. package/extensions/enact-repo/skills/orca-cli/SKILL.md +88 -0
  154. package/extensions/enact-repo/skills/orchestration/SKILL.md +80 -0
  155. package/extensions/enact-repo/skills/prototype/SKILL.md +37 -0
  156. package/extensions/enact-repo/skills/prototype/references/LOGIC.md +79 -0
  157. package/extensions/enact-repo/skills/prototype/references/UI.md +112 -0
  158. package/extensions/enact-repo/skills/refactor-safely/SKILL.md +44 -0
  159. package/extensions/enact-repo/skills/remove-deadcode/SKILL.md +54 -0
  160. package/extensions/enact-repo/skills/research/SKILL.md +27 -0
  161. package/extensions/enact-repo/skills/resolving-merge-conflicts/SKILL.md +28 -0
  162. package/extensions/enact-repo/skills/review-changes/SKILL.md +45 -0
  163. package/extensions/enact-repo/skills/tailwind-4-docs/SKILL.md +88 -0
  164. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/accent-color.mdx +149 -0
  165. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/adding-custom-styles.mdx +635 -0
  166. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-content.mdx +300 -0
  167. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-items.mdx +241 -0
  168. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-self.mdx +294 -0
  169. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/animation.mdx +286 -0
  170. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/appearance.mdx +180 -0
  171. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/aspect-ratio.mdx +98 -0
  172. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-blur.mdx +109 -0
  173. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-brightness.mdx +82 -0
  174. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-contrast.mdx +82 -0
  175. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-grayscale.mdx +99 -0
  176. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-hue-rotate.mdx +173 -0
  177. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-invert.mdx +99 -0
  178. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-opacity.mdx +103 -0
  179. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-saturate.mdx +98 -0
  180. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-sepia.mdx +95 -0
  181. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter.mdx +113 -0
  182. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backface-visibility.mdx +110 -0
  183. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-attachment.mdx +126 -0
  184. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-blend-mode.mdx +79 -0
  185. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-clip.mdx +85 -0
  186. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-color.mdx +176 -0
  187. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-image.mdx +349 -0
  188. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-origin.mdx +64 -0
  189. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-position.mdx +171 -0
  190. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-repeat.mdx +127 -0
  191. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-size.mdx +100 -0
  192. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/block-size.mdx +190 -0
  193. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-collapse.mdx +181 -0
  194. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-color.mdx +316 -0
  195. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-radius.mdx +347 -0
  196. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-spacing.mdx +117 -0
  197. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-style.mdx +129 -0
  198. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-width.mdx +344 -0
  199. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-decoration-break.mdx +71 -0
  200. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-shadow.mdx +497 -0
  201. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-sizing.mdx +175 -0
  202. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-after.mdx +38 -0
  203. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-before.mdx +38 -0
  204. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-inside.mdx +34 -0
  205. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caption-side.mdx +190 -0
  206. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caret-color.mdx +66 -0
  207. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/clear.mdx +224 -0
  208. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color-scheme.mdx +81 -0
  209. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color.mdx +125 -0
  210. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/colors.mdx +927 -0
  211. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/columns.mdx +310 -0
  212. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/compatibility.mdx +193 -0
  213. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/content.mdx +129 -0
  214. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/cursor.mdx +104 -0
  215. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/dark-mode.mdx +191 -0
  216. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/detecting-classes-in-source-files.mdx +315 -0
  217. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/display.mdx +523 -0
  218. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/editor-setup.mdx +90 -0
  219. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/field-sizing.mdx +75 -0
  220. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/fill.mdx +100 -0
  221. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-blur.mdx +114 -0
  222. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-brightness.mdx +102 -0
  223. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-contrast.mdx +102 -0
  224. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-drop-shadow.mdx +230 -0
  225. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-grayscale.mdx +101 -0
  226. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-hue-rotate.mdx +171 -0
  227. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-invert.mdx +93 -0
  228. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-saturate.mdx +109 -0
  229. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-sepia.mdx +92 -0
  230. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter.mdx +113 -0
  231. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-basis.mdx +144 -0
  232. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-direction.mdx +130 -0
  233. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-grow.mdx +129 -0
  234. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-shrink.mdx +95 -0
  235. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-wrap.mdx +118 -0
  236. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex.mdx +164 -0
  237. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/float.mdx +197 -0
  238. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-family.mdx +119 -0
  239. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-feature-settings.mdx +52 -0
  240. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-size.mdx +184 -0
  241. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-smoothing.mdx +67 -0
  242. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-stretch.mdx +138 -0
  243. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-style.mdx +62 -0
  244. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-variant-numeric.mdx +228 -0
  245. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-weight.mdx +105 -0
  246. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/forced-color-adjust.mdx +152 -0
  247. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/functions-and-directives.mdx +322 -0
  248. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/gap.mdx +100 -0
  249. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-columns.mdx +43 -0
  250. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-flow.mdx +58 -0
  251. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-rows.mdx +43 -0
  252. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-column.mdx +124 -0
  253. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-row.mdx +115 -0
  254. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-columns.mdx +101 -0
  255. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-rows.mdx +108 -0
  256. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/height.mdx +260 -0
  257. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hover-focus-and-other-states.mdx +4935 -0
  258. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hyphens.mdx +112 -0
  259. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/inline-size.mdx +191 -0
  260. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/isolation.mdx +30 -0
  261. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-content.mdx +348 -0
  262. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-items.mdx +286 -0
  263. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-self.mdx +282 -0
  264. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/letter-spacing.mdx +100 -0
  265. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-clamp.mdx +110 -0
  266. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-height.mdx +147 -0
  267. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-image.mdx +80 -0
  268. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-position.mdx +67 -0
  269. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-type.mdx +86 -0
  270. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/margin.mdx +397 -0
  271. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-clip.mdx +66 -0
  272. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-composite.mdx +70 -0
  273. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-image.mdx +933 -0
  274. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-mode.mdx +114 -0
  275. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-origin.mdx +66 -0
  276. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-position.mdx +117 -0
  277. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-repeat.mdx +169 -0
  278. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-size.mdx +104 -0
  279. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-type.mdx +98 -0
  280. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-block-size.mdx +153 -0
  281. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-height.mdx +164 -0
  282. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-inline-size.mdx +185 -0
  283. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-width.mdx +214 -0
  284. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-block-size.mdx +146 -0
  285. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-height.mdx +150 -0
  286. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-inline-size.mdx +153 -0
  287. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-width.mdx +153 -0
  288. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mix-blend-mode.mdx +103 -0
  289. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-fit.mdx +147 -0
  290. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-position.mdx +182 -0
  291. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/opacity.mdx +84 -0
  292. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/order.mdx +94 -0
  293. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-color.mdx +130 -0
  294. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-offset.mdx +72 -0
  295. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-style.mdx +134 -0
  296. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-width.mdx +91 -0
  297. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow-wrap.mdx +130 -0
  298. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow.mdx +665 -0
  299. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overscroll-behavior.mdx +151 -0
  300. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/padding.mdx +232 -0
  301. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective-origin.mdx +127 -0
  302. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective.mdx +137 -0
  303. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-content.mdx +257 -0
  304. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-items.mdx +269 -0
  305. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-self.mdx +257 -0
  306. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/pointer-events.mdx +101 -0
  307. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/position.mdx +399 -0
  308. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/preflight.mdx +291 -0
  309. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/resize.mdx +110 -0
  310. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/responsive-design.mdx +666 -0
  311. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/rotate.mdx +291 -0
  312. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scale.mdx +360 -0
  313. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-behavior.mdx +39 -0
  314. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-margin.mdx +268 -0
  315. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-padding.mdx +255 -0
  316. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-align.mdx +281 -0
  317. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-stop.mdx +198 -0
  318. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-type.mdx +284 -0
  319. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/skew.mdx +352 -0
  320. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke-width.mdx +74 -0
  321. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke.mdx +103 -0
  322. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/styling-with-utility-classes.mdx +1020 -0
  323. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/table-layout.mdx +212 -0
  324. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-align.mdx +162 -0
  325. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-color.mdx +155 -0
  326. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-line.mdx +143 -0
  327. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-style.mdx +75 -0
  328. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-thickness.mdx +75 -0
  329. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-indent.mdx +74 -0
  330. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-overflow.mdx +103 -0
  331. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-shadow.mdx +177 -0
  332. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-transform.mdx +106 -0
  333. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-underline-offset.mdx +74 -0
  334. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-wrap.mdx +144 -0
  335. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/theme.mdx +1142 -0
  336. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/top-right-bottom-left.mdx +296 -0
  337. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/touch-action.mdx +95 -0
  338. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-origin.mdx +130 -0
  339. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-style.mdx +110 -0
  340. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform.mdx +51 -0
  341. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-behavior.mdx +76 -0
  342. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-delay.mdx +76 -0
  343. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-duration.mdx +82 -0
  344. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-property.mdx +137 -0
  345. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-timing-function.mdx +89 -0
  346. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/translate.mdx +487 -0
  347. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/upgrade-guide.mdx +910 -0
  348. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/user-select.mdx +114 -0
  349. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/vertical-align.mdx +194 -0
  350. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/visibility.mdx +287 -0
  351. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/white-space.mdx +211 -0
  352. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/width.mdx +264 -0
  353. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/will-change.mdx +47 -0
  354. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/word-break.mdx +94 -0
  355. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/z-index.mdx +104 -0
  356. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-catalog.md +251 -0
  357. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-index.tsx +237 -0
  358. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-source.txt +6 -0
  359. package/extensions/enact-repo/skills/tailwind-4-docs/references/gotchas.md +18 -0
  360. package/extensions/enact-repo/skills/tailwind-4-docs/scripts/sync_tailwind_docs.py +183 -0
  361. package/extensions/enact-repo/skills/tdd/SKILL.md +49 -0
  362. package/extensions/enact-repo/skills/tdd/references/mocking.md +59 -0
  363. package/extensions/enact-repo/skills/tdd/references/tests.md +77 -0
  364. package/extensions/enact-repo/skills/teach/SKILL.md +88 -0
  365. package/extensions/enact-repo/skills/teach/references/GLOSSARY-FORMAT.md +35 -0
  366. package/extensions/enact-repo/skills/teach/references/LEARNING-RECORD-FORMAT.md +46 -0
  367. package/extensions/enact-repo/skills/teach/references/MISSION-FORMAT.md +31 -0
  368. package/extensions/enact-repo/skills/teach/references/PHILOSOPHY.md +65 -0
  369. package/extensions/enact-repo/skills/teach/references/RESOURCES-FORMAT.md +32 -0
  370. package/extensions/enact-repo/skills/testing/SKILL.md +54 -0
  371. package/extensions/enact-repo/skills/to-spec/SKILL.md +85 -0
  372. package/extensions/enact-repo/skills/to-tickets/SKILL.md +75 -0
  373. package/extensions/enact-repo/skills/to-tickets/references/TICKET-TEMPLATES.md +39 -0
  374. package/extensions/enact-repo/skills/triage/SKILL.md +99 -0
  375. package/extensions/enact-repo/skills/triage/references/AGENT-BRIEF.md +207 -0
  376. package/extensions/enact-repo/skills/triage/references/NEEDS-INFO-TEMPLATE.md +17 -0
  377. package/extensions/enact-repo/skills/triage/references/OUT-OF-SCOPE.md +105 -0
  378. package/extensions/enact-repo/skills/ui-ux-pro-max/SKILL.md +32 -0
  379. package/extensions/enact-repo/skills/ui-ux-pro-max/references/Workflow.md +207 -0
  380. package/extensions/enact-repo/skills/ui-ux-pro-max/references/workflow-reference.md +175 -0
  381. package/extensions/enact-repo/skills/wayfinder/SKILL.md +100 -0
  382. package/extensions/enact-repo/skills/wayfinder/references/TEMPLATES.md +35 -0
  383. package/extensions/enact-repo/skills/wayfinder/references/TICKET-TYPES.md +8 -0
  384. package/extensions/enact-repo/skills/writing-great-skills/SKILL.md +93 -0
  385. package/extensions/enact-repo/skills/writing-great-skills/references/GLOSSARY.md +201 -0
  386. package/package.json +22 -17
  387. package/scripts/enact-extensions.mjs +411 -1006
  388. package/scripts/lib/allowed-plugins.mjs +52 -0
  389. package/scripts/lib/build-index.mjs +1 -3
  390. package/scripts/lib/resolve-bundle.mjs +1 -3
  391. package/scripts/lib/run-repo-doctor.mjs +604 -0
  392. package/scripts/lib/run-repo-install.mjs +1651 -0
  393. package/scripts/lib/run-sync.mjs +4 -10
  394. package/scripts/lib/run-validate.mjs +23 -39
  395. package/scripts/lib/skill-validator.mjs +1096 -0
  396. package/spec/enact.json +21 -3
  397. package/spec/enact.md +13 -12
  398. package/spec/kimi.json +100 -0
  399. package/spec/opencode.json +64 -0
  400. package/dist/install.d.ts +0 -235
  401. package/dist/install.d.ts.map +0 -1
  402. package/dist/install.js +0 -697
  403. package/dist/install.js.map +0 -1
  404. package/dist/internal/claude.d.ts +0 -65
  405. package/dist/internal/claude.d.ts.map +0 -1
  406. package/dist/internal/claude.js +0 -200
  407. package/dist/internal/claude.js.map +0 -1
  408. package/dist/internal/codex.d.ts +0 -43
  409. package/dist/internal/codex.d.ts.map +0 -1
  410. package/dist/internal/codex.js +0 -211
  411. package/dist/internal/codex.js.map +0 -1
  412. package/dist/internal/cursor.d.ts +0 -2
  413. package/dist/internal/cursor.d.ts.map +0 -1
  414. package/dist/internal/cursor.js +0 -6
  415. package/dist/internal/cursor.js.map +0 -1
  416. package/dist/principles.d.ts +0 -28
  417. package/dist/principles.d.ts.map +0 -1
  418. package/dist/principles.js +0 -159
  419. package/dist/principles.js.map +0 -1
  420. package/dist/provision.d.ts +0 -30
  421. package/dist/provision.d.ts.map +0 -1
  422. package/dist/provision.js +0 -202
  423. package/dist/provision.js.map +0 -1
  424. package/extensions/dev-state/.agents/plugin.json +0 -36
  425. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +0 -194
  426. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +0 -4
  427. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +0 -130
  428. package/extensions/enact-context/.agents/plugin.json +0 -41
  429. package/extensions/enact-context/.mcp.json +0 -8
  430. package/extensions/enact-context/README.md +0 -25
  431. package/extensions/enact-context/assets/icon.png +0 -0
  432. package/extensions/enact-context/assets/logo.png +0 -0
  433. package/extensions/enact-context/hooks/hooks.json +0 -115
  434. package/extensions/enact-context/skills/enact-context/SKILL.md +0 -151
  435. package/extensions/enact-context/skills/enact-context/scripts/install.sh +0 -69
  436. package/extensions/enact-core/.agents/plugin.json +0 -40
  437. package/extensions/enact-core/OPERATING-PRINCIPLES.md +0 -7
  438. package/extensions/enact-core/hooks/hooks.json +0 -26
  439. package/extensions/enact-evolve/.agents/plugin.json +0 -47
  440. package/extensions/enact-evolve/agents/evolve-session-analyst.toml +0 -37
  441. package/extensions/enact-evolve/assets/icon.png +0 -0
  442. package/extensions/enact-evolve/assets/logo.png +0 -0
  443. package/extensions/enact-evolve/skills/mined-investigate-loop/SKILL.md +0 -68
  444. package/extensions/enact-evolve/skills/session-analysis/SKILL.md +0 -98
  445. package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +0 -343
  446. package/extensions/enact-factory/.agents/plugin.json +0 -49
  447. package/extensions/enact-factory/.mcp.json +0 -8
  448. package/extensions/enact-factory/agents/architect.toml +0 -34
  449. package/extensions/enact-factory/agents/code-reviewer.toml +0 -33
  450. package/extensions/enact-factory/agents/critic.toml +0 -39
  451. package/extensions/enact-factory/agents/executor.toml +0 -26
  452. package/extensions/enact-factory/agents/explore.toml +0 -25
  453. package/extensions/enact-factory/agents/planner.toml +0 -26
  454. package/extensions/enact-factory/agents/verifier.toml +0 -33
  455. package/extensions/enact-factory/assets/icon.png +0 -0
  456. package/extensions/enact-factory/assets/logo.png +0 -0
  457. package/extensions/enact-factory/skills/advisor/SKILL.md +0 -82
  458. package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +0 -57
  459. package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +0 -353
  460. package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +0 -309
  461. package/extensions/enact-factory/skills/azdo-ci-strategy/references/build-failures.md +0 -60
  462. package/extensions/enact-factory/skills/azdo-ci-strategy/references/cli-reference.md +0 -87
  463. package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md +0 -132
  464. package/extensions/enact-factory/skills/azdo-ci-strategy/references/troubleshooting.md +0 -53
  465. package/extensions/enact-factory/skills/cmux-leader/SKILL.md +0 -74
  466. package/extensions/enact-factory/skills/cmux-send/SKILL.md +0 -50
  467. package/extensions/enact-factory/skills/committee/SKILL.md +0 -80
  468. package/extensions/enact-factory/skills/deep-interview/SKILL.md +0 -68
  469. package/extensions/enact-factory/skills/deslop-handover/SKILL.md +0 -97
  470. package/extensions/enact-factory/skills/deslop-handover/deslop.py +0 -181
  471. package/extensions/enact-factory/skills/drive-loop/SKILL.md +0 -394
  472. package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +0 -127
  473. package/extensions/enact-factory/skills/handoff/SKILL.md +0 -75
  474. package/extensions/enact-factory/skills/hyperplan/SKILL.md +0 -59
  475. package/extensions/enact-factory/skills/looplan/SKILL.md +0 -120
  476. package/extensions/enact-factory/skills/paseo-dispatch/SKILL.md +0 -141
  477. package/extensions/enact-factory/skills/plan/SKILL.md +0 -103
  478. package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +0 -46
  479. package/extensions/enact-factory/skills/research/SKILL.md +0 -83
  480. package/extensions/enact-factory/skills/review/SKILL.md +0 -67
  481. package/extensions/enact-factory/skills/security-research/SKILL.md +0 -57
  482. package/extensions/enact-factory/skills/tdd/SKILL.md +0 -62
  483. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +0 -172
  484. package/extensions/enact-factory/skills/trace/SKILL.md +0 -42
  485. package/extensions/enact-factory/skills/ultraqa/SKILL.md +0 -85
  486. package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +0 -56
  487. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +0 -42
  488. package/extensions/enact-wiki/.agents/plugin.json +0 -43
  489. package/extensions/enact-wiki/.mcp.json +0 -15
  490. package/extensions/enact-wiki/README.md +0 -44
  491. package/extensions/enact-wiki/assets/icon.png +0 -0
  492. package/extensions/enact-wiki/assets/logo.png +0 -0
  493. package/extensions/enact-wiki/skills/document-parser/SKILL.md +0 -17
  494. package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +0 -60
  495. package/extensions/enact-wiki/skills/document-parser/skill.json +0 -9
  496. package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +0 -30
  497. package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +0 -62
  498. package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +0 -34
  499. package/extensions/enact-wiki/skills/enact-wiki/references/query.md +0 -59
  500. package/extensions/enact-wiki/skills/search-lab/SKILL.md +0 -57
  501. package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +0 -23
  502. package/extensions/enact-wiki/skills/wiki/SKILL.md +0 -42
  503. package/extensions/net-revenue-management/.agents/plugin.json +0 -40
  504. package/extensions/net-revenue-management/.mcp.json +0 -9
  505. package/extensions/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -30
  506. package/extensions/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -31
  507. package/extensions/plugin-dev/.agents/plugin.json +0 -41
  508. package/extensions/plugin-dev/agents/agent-creator.md +0 -199
  509. package/extensions/plugin-dev/agents/plugin-validator.md +0 -91
  510. package/extensions/plugin-dev/agents/skill-reviewer.md +0 -212
  511. package/extensions/plugin-dev/skills/agent-development/SKILL.md +0 -641
  512. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +0 -250
  513. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +0 -461
  514. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +0 -246
  515. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +0 -216
  516. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +0 -226
  517. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +0 -464
  518. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +0 -474
  519. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +0 -176
  520. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +0 -227
  521. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +0 -227
  522. package/extensions/plugin-dev/skills/create-plugin/SKILL.md +0 -505
  523. package/extensions/plugin-dev/skills/hook-development/SKILL.md +0 -861
  524. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +0 -55
  525. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +0 -57
  526. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +0 -48
  527. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +0 -871
  528. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +0 -145
  529. package/extensions/plugin-dev/skills/hook-development/references/migration.md +0 -392
  530. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +0 -430
  531. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +0 -181
  532. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +0 -153
  533. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +0 -276
  534. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +0 -159
  535. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +0 -775
  536. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +0 -20
  537. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +0 -19
  538. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +0 -38
  539. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +0 -26
  540. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +0 -601
  541. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +0 -190
  542. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +0 -572
  543. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +0 -623
  544. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +0 -221
  545. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +0 -705
  546. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +0 -774
  547. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +0 -83
  548. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +0 -611
  549. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +0 -289
  550. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +0 -592
  551. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +0 -233
  552. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +0 -193
  553. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +0 -625
  554. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +0 -116
  555. package/extensions/plugin-dev/skills/skill-development/SKILL.md +0 -562
  556. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +0 -465
  557. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +0 -167
  558. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +0 -111
  559. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +0 -225
  560. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +0 -39
  561. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +0 -379
  562. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +0 -210
  563. package/extensions/plugin-dev/skills/start/SKILL.md +0 -82
  564. package/scripts/check-hooks.mjs +0 -174
  565. package/scripts/check-principles.mjs +0 -116
  566. package/scripts/hooks/session-start-drift-check.mjs +0 -49
  567. package/scripts/install.sh +0 -70
  568. package/scripts/lib/auto-update.mjs +0 -88
  569. package/scripts/lib/bundle-hash.mjs +0 -137
  570. package/scripts/lib/hooks.mjs +0 -585
  571. package/scripts/lib/ledger.mjs +0 -163
  572. package/scripts/lib/migrate-artifacts.mjs +0 -144
  573. package/scripts/lib/outdated.mjs +0 -144
  574. package/scripts/lib/postinstall-offer.mjs +0 -83
  575. package/scripts/lib/principles.mjs +0 -109
  576. package/scripts/lib/provision-mcp.mjs +0 -16
  577. package/scripts/lib/resolve-plugin-root.mjs +0 -9
  578. package/scripts/lib/run-install.mjs +0 -507
  579. package/scripts/lib/run-prune.mjs +0 -94
  580. package/scripts/lib/run-uninstall.mjs +0 -244
  581. package/scripts/lib/run-update.mjs +0 -165
  582. package/scripts/lib/serve.mjs +0 -472
  583. package/scripts/lib/ups-router.mjs +0 -392
  584. package/scripts/postinstall.mjs +0 -101
  585. package/scripts/setup-enact-context.sh +0 -28
  586. package/scripts/version-bump.sh +0 -484
  587. package/web/assets/README.md +0 -111
  588. package/web/assets/logo-full.png +0 -0
  589. package/web/assets/logo-slim.png +0 -0
  590. package/web/assets/tokens/base.css +0 -45
  591. package/web/assets/tokens/colors.css +0 -248
  592. package/web/assets/tokens/effects.css +0 -24
  593. package/web/assets/tokens/fonts.css +0 -8
  594. package/web/assets/tokens/index.css +0 -18
  595. package/web/assets/tokens/spacing.css +0 -50
  596. package/web/index.html +0 -1188
@@ -1,507 +0,0 @@
1
- import { dirname, join } from "node:path";
2
- import { homedir } from "node:os";
3
- import { existsSync, readFileSync } from "node:fs";
4
- import {
5
- activateClaudePlugin,
6
- installPluginBundle,
7
- installClaudePluginBundle,
8
- installCursorPluginBundle,
9
- installCodexPluginBundle,
10
- installSharedPluginBundle,
11
- defaultEnactHome,
12
- defaultSharedHome,
13
- } from "../../dist/index.js";
14
- import { appendEntry } from "./ledger.mjs";
15
- import { bundleHash } from "./bundle-hash.mjs";
16
- import { provisionMcp, summarizeProvision } from "./provision-mcp.mjs";
17
- import { registerPluginHooks, removeHook, removePluginHooks } from "./hooks.mjs";
18
- import { assertSupportedHookEvents } from "../../dist/index.js";
19
-
20
- export const INSTALL_DRY_RUN_UNSUPPORTED_MESSAGE =
21
- "install --dry-run is not supported. No changes were made.";
22
-
23
- // scope: "global" (default) -> the agent's default home (~/.codex, ~/.enact/agent, ~/.claude, ~/.cursor, ~/.agents)
24
- // "local" -> a project-scoped home under the current dir (./.codex, ./.enact/agent, ...)
25
- // An explicit --<platform>-home always wins over the scope default.
26
- function resolveHomes(options) {
27
- const scope = options.scope ?? "global";
28
- const local = (sub) => join(process.cwd(), sub);
29
- return {
30
- scope,
31
- codexHome: options.codexHome ?? (scope === "local" ? local(".codex") : undefined),
32
- enactHome: options.enactHome ?? (scope === "local" ? local(".enact/agent") : defaultEnactHome()),
33
- claudeHome: options.claudeHome ?? (scope === "local" ? local(".claude") : undefined),
34
- cursorHome: options.cursorHome ?? (scope === "local" ? local(".cursor") : undefined),
35
- // For shared: sharedHome is the base directory; installSharedPluginBundle appends .agents/skills/<name>
36
- // Global default: homedir() (skills land at ~/.agents/skills/<name>)
37
- // Local: cwd (skills land at ./.agents/skills/<name>)
38
- sharedHome: options.sharedHome ?? (scope === "local" ? process.cwd() : defaultSharedHome()),
39
- };
40
- }
41
-
42
- // ---------------------------------------------------------------------------
43
- // ALL_PLATFORMS — deterministic order for `--platform all`
44
- // ---------------------------------------------------------------------------
45
- const ALL_PLATFORMS = ["codex", "claude", "cursor", "enact"];
46
-
47
- // ---------------------------------------------------------------------------
48
- // PLATFORM_TARGETS — data-driven dispatch table
49
- //
50
- // Each entry describes how to install for a given platform:
51
- // homeField — which field of `homes` supplies the target directory
52
- // install — the function to call; receives (pluginRoot, home, options)
53
- // log — how to log the result
54
- // ---------------------------------------------------------------------------
55
- const PLATFORM_TARGETS = {
56
- claude: {
57
- homeField: "claudeHome",
58
- install(pluginRoot, home, options) {
59
- return installClaudePluginBundle({
60
- pluginRoot,
61
- claudeHome: home,
62
- marketplaceName: options.marketplaceName,
63
- sync: options.sync,
64
- });
65
- },
66
- log(result) {
67
- console.log(`installed ${result.name} -> ${result.installedPluginPath}`);
68
- console.log(`registered marketplace ${result.marketplaceName} -> ${result.marketplaceDir}`);
69
- for (const path of result.refreshedPaths) {
70
- console.log(`refreshed ${path}`);
71
- }
72
- },
73
- },
74
-
75
- cursor: {
76
- homeField: "cursorHome",
77
- install(pluginRoot, home, options) {
78
- return installCursorPluginBundle({
79
- pluginRoot,
80
- cursorHome: home,
81
- sync: options.sync,
82
- });
83
- },
84
- log(result) {
85
- console.log(`installed ${result.name} -> ${result.installedPluginPath}`);
86
- for (const path of result.refreshedPaths) {
87
- console.log(`refreshed ${path}`);
88
- }
89
- },
90
- },
91
-
92
- enact: {
93
- homeField: "enactHome",
94
- install(pluginRoot, home, options) {
95
- return installCodexPluginBundle({
96
- pluginRoot,
97
- codexHome: home,
98
- marketplaceName: options.marketplaceName,
99
- enable: options.enable,
100
- sync: options.sync,
101
- });
102
- },
103
- log(result) {
104
- console.log(`installed ${result.pluginConfigKey} -> ${result.configPath}`);
105
- console.log(`wrote ${result.marketplacePath}`);
106
- for (const path of result.refreshedPaths) {
107
- console.log(`refreshed ${path}`);
108
- }
109
- },
110
- },
111
-
112
- shared: {
113
- homeField: "sharedHome",
114
- install(pluginRoot, home, _options) {
115
- return installSharedPluginBundle({
116
- pluginRoot,
117
- sharedHome: home,
118
- });
119
- },
120
- log(result) {
121
- console.log(`installed ${result.name} skills -> ${result.installedSkillsPath}`);
122
- },
123
- },
124
- };
125
-
126
- // ---------------------------------------------------------------------------
127
- // parsePlatforms — expand "all" and split comma-separated platform lists.
128
- // Returns a deduped array of validated platform name strings.
129
- // Throws on any unknown platform token (no silent codex fallthrough).
130
- // ---------------------------------------------------------------------------
131
- function parsePlatforms(platform) {
132
- if (!platform || platform === "codex") return ["codex"];
133
- if (platform === "all") return ALL_PLATFORMS;
134
-
135
- // Comma-separated: "claude,cursor" → ["claude", "cursor"]. Dedup preserving order.
136
- const parts = [...new Set(platform.split(",").map((p) => p.trim()).filter(Boolean))];
137
- if (parts.length === 0) return ["codex"];
138
-
139
- // Validate each token. "codex" is valid (table fallthrough); "all" is only valid
140
- // as a standalone value, so it is rejected here when mixed with other names.
141
- const valid = new Set(["codex", ...Object.keys(PLATFORM_TARGETS)]);
142
- for (const part of parts) {
143
- if (!valid.has(part)) {
144
- throw new Error(
145
- `Unknown platform: "${part}". Valid: codex, claude, cursor, enact, shared, all`,
146
- );
147
- }
148
- }
149
- return parts;
150
- }
151
-
152
- // ---------------------------------------------------------------------------
153
- // Ledger wiring — record successful installs to the install ledger.
154
- //
155
- // BEST-EFFORT: every ledger write is wrapped so a failure NEVER throws out of
156
- // the install. On failure we emit a single-line warning to stderr and continue.
157
- // ---------------------------------------------------------------------------
158
-
159
- // The installed-path field varies by platform result shape.
160
- function installedPathOf(result) {
161
- return result.installedPluginPath ?? result.installedSkillsPath ?? result.configPath ?? "";
162
- }
163
-
164
- function recordLedgerEntry(entry, _homes, options) {
165
- try {
166
- // Single global ledger: every install (local or global scope) appends to
167
- // <home>/.enact/extensions/ledger.jsonl. The scope distinction lives in the
168
- // entry's `scope` field, not the path. Tests pass an explicit ledgerHome so
169
- // they never write into the real ~/.enact.
170
- appendEntry(entry, {
171
- home: options.ledgerHome ?? homedir(),
172
- });
173
- } catch (err) {
174
- const msg = err instanceof Error ? err.message : String(err);
175
- process.stderr.write(`[enact-extensions install] Warning: failed to write install ledger: ${msg}\n`);
176
- }
177
- }
178
-
179
- // ---------------------------------------------------------------------------
180
- // computeBundleHash — best-effort; never throws out of the install path.
181
- // Returns the sha256 hex hash of the canonical bundle, or null on failure.
182
- // The `bundleHashRoot` option (injected by tests) overrides the default
183
- // pluginRoot so tests can simulate a hash failure without breaking the install.
184
- // ---------------------------------------------------------------------------
185
- function computeBundleHash(pluginRoot, options) {
186
- const root = options.bundleHashRoot ?? pluginRoot;
187
- try {
188
- return bundleHash(root);
189
- } catch (err) {
190
- const msg = err instanceof Error ? err.message : String(err);
191
- process.stderr.write(`[enact-extensions install] Warning: cannot compute bundle hash: ${msg}\n`);
192
- return null;
193
- }
194
- }
195
-
196
- function readJsonIfExists(path) {
197
- if (!existsSync(path)) return null;
198
- try {
199
- return JSON.parse(readFileSync(path, "utf8"));
200
- } catch {
201
- return null;
202
- }
203
- }
204
-
205
- function readCanonicalManifest(pluginRoot) {
206
- return readJsonIfExists(join(pluginRoot, ".agents", "plugin.json"));
207
- }
208
-
209
- function supportedHostSurfaces(pluginRoot) {
210
- const manifest = readCanonicalManifest(pluginRoot);
211
- const rawTargets = manifest?.targets;
212
- if (!Array.isArray(rawTargets)) return [...ALL_PLATFORMS];
213
- return rawTargets.filter((target) => ALL_PLATFORMS.includes(target));
214
- }
215
-
216
- function assertRequestedPlatformsSupported(pluginRoot, requestedPlatforms) {
217
- const supported = supportedHostSurfaces(pluginRoot);
218
- const unsupported = requestedPlatforms.filter(
219
- (platform) => ALL_PLATFORMS.includes(platform) && !supported.includes(platform),
220
- );
221
- if (unsupported.length === 0) return;
222
-
223
- const manifest = readCanonicalManifest(pluginRoot);
224
- const pluginName = typeof manifest?.name === "string" ? manifest.name : pluginRoot.split("/").pop();
225
- const supportedLabel = supported.length > 0 ? supported.join(", ") : "(none)";
226
- throw new Error(
227
- `Plugin ${pluginName} does not target host surface(s): ${unsupported.join(", ")}. ` +
228
- `Supported host surfaces: ${supportedLabel}`,
229
- );
230
- }
231
-
232
- function readPluginHookConfig(pluginRoot) {
233
- const manifest = readJsonIfExists(join(pluginRoot, ".agents", "plugin.json"));
234
- const hooksPath = typeof manifest?.hooks === "string" ? manifest.hooks : null;
235
- if (!hooksPath) return null;
236
- const normalized = hooksPath.replace(/^\.\//, "");
237
- return readJsonIfExists(join(pluginRoot, normalized));
238
- }
239
-
240
- function hookConfigHasEntries(hookConfig) {
241
- const hooks = hookConfig?.hooks;
242
- if (!hooks || typeof hooks !== "object" || Array.isArray(hooks)) return false;
243
- return Object.values(hooks).some((entries) => Array.isArray(entries) && entries.length > 0);
244
- }
245
-
246
- function registerInstalledPluginHooks(pluginRoot, platform, result, homes, options) {
247
- // codex reads hooks from the installed plugin bundle (no config.toml
248
- // registration); cursor likewise. claude/enact stay in the reconcile path
249
- // only so removePluginHooks can clean legacy scattered runtime hooks.
250
- if (!["claude", "cursor", "enact"].includes(platform)) return;
251
- const hookConfig = readPluginHookConfig(pluginRoot);
252
- const name = result?.name ?? result?.results?.[0]?.name;
253
- if (!name) return;
254
-
255
- const hookOpts = {
256
- cwd: options.cwd ?? pluginRoot,
257
- claudeHome: platform === "claude" ? homes.claudeHome : undefined,
258
- cursorHome: platform === "cursor" ? homes.cursorHome : undefined,
259
- enactHome: platform === "enact" ? homes.enactHome : undefined,
260
- };
261
-
262
- // Self-healing reconcile: first remove ALL of THIS plugin's prior hook
263
- // registrations (orphaned events dropped from the bundle + duplicate entries
264
- // accumulated by earlier appends), then register the current bundle's set.
265
- // Removal is marker/command scoped per plugin, so the user's own hooks and
266
- // other plugins' hooks are never touched.
267
- removePluginHooks(platform, name, hookOpts);
268
-
269
- if (!hookConfig) return;
270
- const hookResult = registerPluginHooks(platform, name, hookConfig, hookOpts);
271
- if (hookResult.result !== "skipped") {
272
- console.log(`hooks ${hookResult.result} for ${name} on ${platform} -> ${hookResult.location}`);
273
- }
274
- }
275
-
276
- function activateInstalledClaudePlugin(pluginRoot, result, homes, options) {
277
- const hookConfig = readPluginHookConfig(pluginRoot);
278
- if (!hookConfigHasEntries(hookConfig)) return;
279
- const pluginId = `${result.name}@${result.marketplaceName ?? (options.marketplaceName ?? "enact-os-plugins")}`;
280
- const activation = activateClaudePlugin(
281
- homes.claudeHome,
282
- pluginId,
283
- result.marketplaceDir,
284
- homes.scope,
285
- options.claudeExec,
286
- );
287
- console.log(`claude plugin ${activation.action} -> ${pluginId}`);
288
- }
289
-
290
- function removeLegacyCodexPluginHooks(name, result, homes, options) {
291
- if (!name) return;
292
-
293
- if (Array.isArray(result?.results)) {
294
- for (const install of result.results) {
295
- const codexHome = install.configPath ? dirname(install.configPath) : homes.codexHome;
296
- const hookResult = removePluginHooks("codex", name, {
297
- cwd: options.cwd ?? process.cwd(),
298
- codexHome,
299
- });
300
- if (hookResult.result === "removed") {
301
- console.log(`removed legacy codex hooks for ${name} -> ${hookResult.location}`);
302
- }
303
- }
304
- return;
305
- }
306
-
307
- const hookResult = removePluginHooks("codex", name, {
308
- cwd: options.cwd ?? process.cwd(),
309
- codexHome: homes.codexHome,
310
- });
311
- if (hookResult.result === "removed") {
312
- console.log(`removed legacy codex hooks for ${name} -> ${hookResult.location}`);
313
- }
314
- }
315
-
316
- function removeLegacyStandaloneDriftHook(platform, name, homes, options) {
317
- if (name !== "enact-core") return;
318
- const hookResult = removeHook(platform, {
319
- claudeHome: homes.claudeHome,
320
- codexHome: homes.codexHome,
321
- cursorHome: homes.cursorHome,
322
- enactHome: homes.enactHome,
323
- local: homes.scope === "local",
324
- cwd: options.cwd ?? process.cwd(),
325
- });
326
- if (hookResult.result === "removed") {
327
- console.log(`removed legacy drift hook for ${name} on ${platform} -> ${hookResult.location}`);
328
- }
329
- }
330
-
331
- // Append one install entry per installed target in a single-platform result.
332
- // Tolerant of every result shape (single platform, shared, codex multi-home).
333
- // `hash` is the pre-computed bundle hash (or null) for this install invocation.
334
- function recordInstall(platform, result, homes, options, hash) {
335
- const targets = [];
336
- if (result && Array.isArray(result.results)) {
337
- // codex (default) multi-home: one entry per codex home.
338
- for (const install of result.results) {
339
- targets.push({
340
- name: install.name,
341
- version: install.version,
342
- path: installedPathOf(install),
343
- home: install.configPath ? join(install.configPath, "..") : homes.codexHome,
344
- });
345
- }
346
- } else if (result) {
347
- targets.push({
348
- name: result.name,
349
- version: result.version,
350
- path: installedPathOf(result),
351
- home: homes[PLATFORM_TARGETS[platform]?.homeField] ?? homes.codexHome,
352
- });
353
- }
354
-
355
- for (const t of targets) {
356
- if (!t.name) continue;
357
- recordLedgerEntry(
358
- {
359
- action: "install",
360
- name: t.name,
361
- version: t.version,
362
- platform,
363
- scope: homes.scope,
364
- home: t.home,
365
- path: t.path,
366
- hash,
367
- marketplaceName: options.marketplaceName ?? "enact-os-plugins",
368
- },
369
- homes,
370
- options,
371
- );
372
- }
373
- }
374
-
375
- // ---------------------------------------------------------------------------
376
- // runSinglePlatform — install for one platform; returns the install result.
377
- // Throws on error (caller catches for partial-failure tracking).
378
- // `hash` is the pre-computed bundle hash (or null) for this install invocation.
379
- // ---------------------------------------------------------------------------
380
- function runSinglePlatform(pluginRoot, platform, homes, options, hash) {
381
- const target = PLATFORM_TARGETS[platform];
382
- if (target) {
383
- const home = homes[target.homeField];
384
- const result = target.install(pluginRoot, home, options);
385
- target.log(result);
386
- recordInstall(platform, result, homes, options, hash);
387
- registerInstalledPluginHooks(pluginRoot, platform, result, homes, options);
388
- removeLegacyStandaloneDriftHook(platform, result?.name, homes, options);
389
- if (platform === "claude") {
390
- activateInstalledClaudePlugin(pluginRoot, result, homes, options);
391
- }
392
- return result;
393
- }
394
-
395
- // codex (default) — multi-home discovery via installPluginBundle.
396
- const result = installPluginBundle({
397
- pluginRoot,
398
- cwd: options.cwd ?? pluginRoot,
399
- ...options,
400
- codexHome: homes.codexHome,
401
- });
402
- for (const install of result.results) {
403
- console.log(`installed ${install.pluginConfigKey} -> ${install.configPath}`);
404
- console.log(`wrote ${install.marketplacePath}`);
405
- for (const path of install.refreshedPaths) {
406
- console.log(`refreshed ${path}`);
407
- }
408
- }
409
- recordInstall("codex", result, homes, options, hash);
410
- removeLegacyCodexPluginHooks(result.results[0]?.name, result, homes, options);
411
- removeLegacyStandaloneDriftHook("codex", result.results[0]?.name, homes, options);
412
- return result;
413
- }
414
-
415
- // ---------------------------------------------------------------------------
416
- // MCP dependency provisioning — best-effort, platform-independent.
417
- //
418
- // After a successful install we provision any packages the bundle's declared
419
- // MCP servers need (uvx → `uv tool install`, npx → `npm install -g`, etc.).
420
- // This runs ONCE per runInstall call (provisioning is platform-independent; a
421
- // `--platform all` install still provisions a single time). Provisioning is on
422
- // by DEFAULT; pass `--no-provision` / { noProvision: true } to skip. A failure
423
- // here NEVER fails the install — provisionMcp is best-effort by contract.
424
- // ---------------------------------------------------------------------------
425
- function runProvision(pluginRoot, options) {
426
- try {
427
- const provisionResults = provisionMcp(pluginRoot, {
428
- noProvision: options.noProvision,
429
- exec: options.provisionExec, // injectable for tests; undefined → real spawnSync
430
- });
431
- for (const line of summarizeProvision(provisionResults)) {
432
- console.log(`provision: ${line}`);
433
- }
434
- return provisionResults;
435
- } catch (err) {
436
- // Defence-in-depth: provisionMcp is already best-effort, but never let a
437
- // provisioning bug fail an otherwise-successful install.
438
- const msg = err instanceof Error ? err.message : String(err);
439
- process.stderr.write(`[enact-extensions install] Warning: MCP provisioning errored: ${msg}\n`);
440
- return [];
441
- }
442
- }
443
-
444
- export function runInstall(pluginRoot, options = {}) {
445
- if (options.dryRun) {
446
- throw new Error(INSTALL_DRY_RUN_UNSUPPORTED_MESSAGE);
447
- }
448
-
449
- // Refuse to install a bundle that declares hook events outside the
450
- // cross-surface intersection (claude, codex, cursor, enact).
451
- assertSupportedHookEvents(pluginRoot);
452
-
453
- const platforms = parsePlatforms(options.platform);
454
- assertRequestedPlatformsSupported(pluginRoot, platforms);
455
- const homes = resolveHomes(options);
456
- console.log(`install scope: ${homes.scope}${homes.scope === "local" ? ` (${process.cwd()})` : ""}`);
457
-
458
- // Compute bundle hash ONCE per runInstall invocation (best-effort, never throws).
459
- // Applied to every per-platform ledger entry for this bundle.
460
- const hash = computeBundleHash(pluginRoot, options);
461
-
462
- // Single-platform path — unchanged behaviour (no .platforms wrapper).
463
- if (platforms.length === 1) {
464
- const result = runSinglePlatform(pluginRoot, platforms[0], homes, options, hash);
465
- // Provision once after a successful install.
466
- result.provision = runProvision(pluginRoot, options);
467
- return result;
468
- }
469
-
470
- // Multi-platform path — run each sequentially, collect results + errors.
471
- const platformResults = [];
472
- let hasError = false;
473
-
474
- for (const platform of platforms) {
475
- console.log(`\n[${platform}] installing...`);
476
- try {
477
- const result = runSinglePlatform(pluginRoot, platform, homes, options, hash);
478
- console.log(`[${platform}] ✓ done`);
479
- platformResults.push({ platform, result, error: null });
480
- } catch (err) {
481
- const msg = err instanceof Error ? err.message : String(err);
482
- console.error(`[${platform}] ✗ failed: ${msg}`);
483
- platformResults.push({ platform, result: null, error: err });
484
- hasError = true;
485
- }
486
- }
487
-
488
- // Provision ONCE for the whole multi-platform run (platform-independent), as
489
- // long as at least one platform installed successfully.
490
- let provision = [];
491
- if (platformResults.some((r) => !r.error)) {
492
- provision = runProvision(pluginRoot, options);
493
- }
494
-
495
- if (hasError) {
496
- const failed = platformResults.filter((r) => r.error).map((r) => r.platform);
497
- const succeeded = platformResults.filter((r) => !r.error).map((r) => r.platform);
498
- const summary = `Multi-platform install: ${succeeded.length} succeeded (${succeeded.join(", ")}), ${failed.length} failed (${failed.join(", ")})`;
499
- console.error(`\n${summary}`);
500
- const err = new Error(summary);
501
- err.platforms = platformResults;
502
- err.provision = provision;
503
- throw err;
504
- }
505
-
506
- return { platforms: platformResults, provision };
507
- }
@@ -1,94 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { homedir } from "node:os";
3
- import { cwd as processCwd } from "node:process";
4
- import { dirname, join, resolve } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { appendEntry, listInstalled } from "./ledger.mjs";
7
- import { parsePlatforms, runUninstall } from "./run-uninstall.mjs";
8
-
9
- const __dirname = dirname(fileURLToPath(import.meta.url));
10
- const PACKAGE_ROOT = resolve(__dirname, "..", "..");
11
- const DEFAULT_MARKETPLACE = "enact-os-plugins";
12
-
13
- function defaultSourceRoots(cwd) {
14
- const roots = [join(PACKAGE_ROOT, "extensions")];
15
- const cwdExtensions = join(cwd, "extensions");
16
- if (resolve(cwdExtensions) !== resolve(roots[0])) roots.push(cwdExtensions);
17
- return roots;
18
- }
19
-
20
- function sourceBundleExists(name, sourceRoots) {
21
- return sourceRoots.some((root) => existsSync(join(root, name, ".agents", "plugin.json")));
22
- }
23
-
24
- function installedSurfaceExists(entry) {
25
- return Boolean(entry.path) && existsSync(entry.path);
26
- }
27
-
28
- function homeOptionForPlatform(platform) {
29
- switch (platform) {
30
- case "codex": return "codexHome";
31
- case "claude": return "claudeHome";
32
- case "cursor": return "cursorHome";
33
- case "enact": return "enactHome";
34
- case "shared": return "sharedHome";
35
- default: return "codexHome";
36
- }
37
- }
38
-
39
- function recordPruneTombstone(entry, ledgerHome, marketplaceName) {
40
- appendEntry(
41
- {
42
- action: "uninstall",
43
- name: entry.name,
44
- version: entry.version ?? "0.0.0",
45
- platform: entry.platform,
46
- scope: entry.scope,
47
- home: entry.home,
48
- path: entry.path,
49
- marketplaceName: entry.marketplaceName ?? marketplaceName,
50
- },
51
- { home: ledgerHome },
52
- );
53
- }
54
-
55
- export function runPrune(options = {}) {
56
- const cwd = options.cwd ?? processCwd();
57
- const ledgerHome = options.ledgerHome ?? options.home ?? homedir();
58
- const marketplaceName = options.marketplaceName ?? DEFAULT_MARKETPLACE;
59
- const platforms = new Set(parsePlatforms(options.platform ?? "all"));
60
- const sourceRoots = options.sourceRoots ?? defaultSourceRoots(cwd);
61
- const installed = listInstalled({ home: ledgerHome });
62
-
63
- const candidates = installed
64
- .filter((entry) => platforms.has(entry.platform))
65
- .filter((entry) => entry.marketplaceName === marketplaceName)
66
- .filter((entry) => !sourceBundleExists(entry.name, sourceRoots) || !installedSurfaceExists(entry));
67
-
68
- const pruned = [];
69
- const failed = [];
70
-
71
- if (options.dryRun) {
72
- return { candidates, pruned, failed, dryRun: true };
73
- }
74
-
75
- for (const entry of candidates) {
76
- const homeOption = homeOptionForPlatform(entry.platform);
77
- try {
78
- runUninstall(entry.name, {
79
- platform: entry.platform,
80
- scope: entry.scope,
81
- [homeOption]: entry.home,
82
- marketplaceName,
83
- ledgerHome,
84
- version: entry.version,
85
- });
86
- recordPruneTombstone(entry, ledgerHome, marketplaceName);
87
- pruned.push(entry);
88
- } catch (err) {
89
- failed.push({ entry, error: err instanceof Error ? err : new Error(String(err)) });
90
- }
91
- }
92
-
93
- return { candidates, pruned, failed, dryRun: false };
94
- }