@amsterdamdatalabs/enact-extensions 0.1.37 → 0.1.47

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