@amsterdamdatalabs/enact-extensions 0.1.42 → 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.
- package/README.md +67 -108
- package/bundled-extensions.json +6 -0
- package/dist/create/enact.d.ts.map +1 -1
- package/dist/create/enact.js +2 -0
- package/dist/create/enact.js.map +1 -1
- package/dist/create/index.d.ts +3 -0
- package/dist/create/index.d.ts.map +1 -1
- package/dist/create/index.js +6 -0
- package/dist/create/index.js.map +1 -1
- package/dist/create/kimi.d.ts +16 -0
- package/dist/create/kimi.d.ts.map +1 -0
- package/dist/create/kimi.js +87 -0
- package/dist/create/kimi.js.map +1 -0
- package/dist/create/opencode.d.ts +129 -0
- package/dist/create/opencode.d.ts.map +1 -0
- package/dist/create/opencode.js +696 -0
- package/dist/create/opencode.js.map +1 -0
- package/dist/index.d.ts +12 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/internal/agents.d.ts +11 -1
- package/dist/internal/agents.d.ts.map +1 -1
- package/dist/internal/agents.js +119 -3
- package/dist/internal/agents.js.map +1 -1
- package/dist/internal/extensions-table.d.ts +58 -0
- package/dist/internal/extensions-table.d.ts.map +1 -0
- package/dist/internal/extensions-table.js +134 -0
- package/dist/internal/extensions-table.js.map +1 -0
- package/dist/internal/file-ops.d.ts +36 -0
- package/dist/internal/file-ops.d.ts.map +1 -0
- package/dist/internal/file-ops.js +89 -0
- package/dist/internal/file-ops.js.map +1 -0
- package/dist/internal/hooks.d.ts +56 -0
- package/dist/internal/hooks.d.ts.map +1 -0
- package/dist/internal/hooks.js +128 -0
- package/dist/internal/hooks.js.map +1 -0
- package/dist/internal/json-merge.d.ts +63 -0
- package/dist/internal/json-merge.d.ts.map +1 -0
- package/dist/internal/json-merge.js +122 -0
- package/dist/internal/json-merge.js.map +1 -0
- package/dist/internal/lock-ownership.d.ts +41 -0
- package/dist/internal/lock-ownership.d.ts.map +1 -0
- package/dist/internal/lock-ownership.js +24 -0
- package/dist/internal/lock-ownership.js.map +1 -0
- package/dist/internal/platform.d.ts.map +1 -1
- package/dist/internal/platform.js +90 -4
- package/dist/internal/platform.js.map +1 -1
- package/dist/internal/schema.js.map +1 -1
- package/dist/internal/toml-block.d.ts +59 -0
- package/dist/internal/toml-block.d.ts.map +1 -0
- package/dist/internal/toml-block.js +113 -0
- package/dist/internal/toml-block.js.map +1 -0
- package/dist/internal/types.d.ts +2 -1
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/projection.d.ts +47 -0
- package/dist/projection.d.ts.map +1 -0
- package/dist/projection.js +180 -0
- package/dist/projection.js.map +1 -0
- package/dist/validate/index.d.ts +9 -4
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +56 -7
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/kimi.d.ts +3 -0
- package/dist/validate/kimi.d.ts.map +1 -0
- package/dist/validate/kimi.js +11 -0
- package/dist/validate/kimi.js.map +1 -0
- package/dist/validate/opencode.d.ts +3 -0
- package/dist/validate/opencode.d.ts.map +1 -0
- package/dist/validate/opencode.js +11 -0
- package/dist/validate/opencode.js.map +1 -0
- package/dist/validate/run.d.ts +39 -0
- package/dist/validate/run.d.ts.map +1 -0
- package/dist/validate/run.js +63 -0
- package/dist/validate/run.js.map +1 -0
- package/extensions/enact-loop/.agents/plugin.json +12 -8
- package/extensions/enact-loop/scripts/validate.mjs +84 -2
- package/extensions/enact-loop/skills/enact-loop/SKILL.md +36 -466
- package/extensions/enact-loop/skills/enact-loop/references/loop-contract.md +114 -0
- package/extensions/enact-loop/skills/loop-budget/SKILL.md +43 -26
- package/extensions/enact-loop/skills/loop-intake/SKILL.md +44 -32
- package/extensions/enact-repo/.agents/plugin.json +55 -0
- package/extensions/enact-repo/.mcp.json +20 -0
- package/extensions/enact-repo/README.md +90 -0
- package/extensions/enact-repo/hooks/hooks.json +98 -0
- package/extensions/enact-repo/lean-ctx/config.toml +35 -0
- package/extensions/enact-repo/lean-ctx/layout.toml +5 -0
- package/extensions/enact-repo/skills/aca-sandboxes/SKILL.md +53 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/capabilities.md +52 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/install.md +87 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/prerequisites.md +52 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/quickstart.md +164 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/reference-advanced.md +251 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/reference.md +287 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/response-cues.md +71 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/scenarios.md +219 -0
- package/extensions/enact-repo/skills/aca-sandboxes/version.json +4 -0
- package/extensions/enact-repo/skills/backend-remove-deadcode/SKILL.md +96 -0
- package/extensions/enact-repo/skills/cmux-leader/SKILL.md +61 -0
- package/extensions/enact-repo/skills/cmux-send/SKILL.md +61 -0
- package/extensions/enact-repo/skills/code-review/SKILL.md +100 -0
- package/extensions/enact-repo/skills/codebase-design/SKILL.md +98 -0
- package/extensions/enact-repo/skills/codebase-design/references/DEEPENING.md +37 -0
- package/extensions/enact-repo/skills/codebase-design/references/DESIGN-IT-TWICE.md +44 -0
- package/extensions/enact-repo/skills/codebase-design/references/TESTABILITY.md +29 -0
- package/extensions/enact-repo/skills/computer-use/SKILL.md +76 -0
- package/extensions/enact-repo/skills/debug-issue/SKILL.md +40 -0
- package/extensions/enact-repo/skills/diagnosing-bugs/SKILL.md +100 -0
- package/extensions/enact-repo/skills/diagnosing-bugs/references/FEEDBACK-LOOP-TACTICS.md +34 -0
- package/extensions/enact-repo/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/extensions/enact-repo/skills/domain-modeling/SKILL.md +86 -0
- package/extensions/enact-repo/skills/domain-modeling/references/ADR-FORMAT.md +47 -0
- package/extensions/enact-repo/skills/domain-modeling/references/CONTEXT-FORMAT.md +60 -0
- package/extensions/enact-repo/skills/explore-codebase/SKILL.md +41 -0
- package/extensions/enact-repo/skills/frontend-design/LICENSE.txt +177 -0
- package/extensions/enact-repo/skills/frontend-design/SKILL.md +56 -0
- package/extensions/enact-repo/skills/grill-me/SKILL.md +20 -0
- package/extensions/enact-repo/skills/grill-with-docs/SKILL.md +20 -0
- package/extensions/enact-repo/skills/handoff/SKILL.md +28 -0
- package/extensions/enact-repo/skills/http-contract-migration/SKILL.md +74 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/compatibility-and-gates.md +26 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/hexagonal-boundary.md +16 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/publication-and-adoption.md +31 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/wire-fidelity-and-dto.md +31 -0
- package/extensions/enact-repo/skills/implement/SKILL.md +28 -0
- package/extensions/enact-repo/skills/improve-codebase-architecture/SKILL.md +80 -0
- package/extensions/enact-repo/skills/improve-codebase-architecture/references/HTML-REPORT.md +123 -0
- package/extensions/enact-repo/skills/interaction-design/SKILL.md +30 -0
- package/extensions/enact-repo/skills/interaction-design/references/Workflow.md +146 -0
- package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-gsap.md +220 -0
- package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-native.md +110 -0
- package/extensions/enact-repo/skills/interaction-design/references/animation-libraries.md +178 -0
- package/extensions/enact-repo/skills/interaction-design/references/interaction-patterns.md +166 -0
- package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns-advanced.md +285 -0
- package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns.md +254 -0
- package/extensions/enact-repo/skills/interaction-design/references/scroll-animations-reveals.md +213 -0
- package/extensions/enact-repo/skills/interaction-design/references/scroll-animations.md +209 -0
- package/extensions/enact-repo/skills/lean-ctx/SKILL.md +81 -0
- package/extensions/enact-repo/skills/orca-cli/SKILL.md +88 -0
- package/extensions/enact-repo/skills/orchestration/SKILL.md +80 -0
- package/extensions/enact-repo/skills/prototype/SKILL.md +37 -0
- package/extensions/enact-repo/skills/prototype/references/LOGIC.md +79 -0
- package/extensions/enact-repo/skills/prototype/references/UI.md +112 -0
- package/extensions/enact-repo/skills/refactor-safely/SKILL.md +44 -0
- package/extensions/enact-repo/skills/remove-deadcode/SKILL.md +54 -0
- package/extensions/enact-repo/skills/research/SKILL.md +27 -0
- package/extensions/enact-repo/skills/resolving-merge-conflicts/SKILL.md +28 -0
- package/extensions/enact-repo/skills/review-changes/SKILL.md +45 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/SKILL.md +88 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/accent-color.mdx +149 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/adding-custom-styles.mdx +635 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-content.mdx +300 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-items.mdx +241 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-self.mdx +294 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/animation.mdx +286 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/appearance.mdx +180 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/aspect-ratio.mdx +98 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-blur.mdx +109 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-brightness.mdx +82 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-contrast.mdx +82 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-grayscale.mdx +99 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-hue-rotate.mdx +173 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-invert.mdx +99 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-opacity.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-saturate.mdx +98 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-sepia.mdx +95 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter.mdx +113 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backface-visibility.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-attachment.mdx +126 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-blend-mode.mdx +79 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-clip.mdx +85 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-color.mdx +176 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-image.mdx +349 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-origin.mdx +64 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-position.mdx +171 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-repeat.mdx +127 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-size.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/block-size.mdx +190 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-collapse.mdx +181 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-color.mdx +316 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-radius.mdx +347 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-spacing.mdx +117 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-style.mdx +129 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-width.mdx +344 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-decoration-break.mdx +71 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-shadow.mdx +497 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-sizing.mdx +175 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-after.mdx +38 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-before.mdx +38 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-inside.mdx +34 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caption-side.mdx +190 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caret-color.mdx +66 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/clear.mdx +224 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color-scheme.mdx +81 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color.mdx +125 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/colors.mdx +927 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/columns.mdx +310 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/compatibility.mdx +193 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/content.mdx +129 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/cursor.mdx +104 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/dark-mode.mdx +191 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/detecting-classes-in-source-files.mdx +315 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/display.mdx +523 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/editor-setup.mdx +90 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/field-sizing.mdx +75 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/fill.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-blur.mdx +114 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-brightness.mdx +102 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-contrast.mdx +102 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-drop-shadow.mdx +230 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-grayscale.mdx +101 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-hue-rotate.mdx +171 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-invert.mdx +93 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-saturate.mdx +109 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-sepia.mdx +92 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter.mdx +113 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-basis.mdx +144 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-direction.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-grow.mdx +129 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-shrink.mdx +95 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-wrap.mdx +118 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex.mdx +164 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/float.mdx +197 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-family.mdx +119 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-feature-settings.mdx +52 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-size.mdx +184 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-smoothing.mdx +67 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-stretch.mdx +138 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-style.mdx +62 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-variant-numeric.mdx +228 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-weight.mdx +105 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/forced-color-adjust.mdx +152 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/functions-and-directives.mdx +322 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/gap.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-columns.mdx +43 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-flow.mdx +58 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-rows.mdx +43 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-column.mdx +124 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-row.mdx +115 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-columns.mdx +101 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-rows.mdx +108 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/height.mdx +260 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hover-focus-and-other-states.mdx +4935 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hyphens.mdx +112 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/inline-size.mdx +191 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/isolation.mdx +30 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-content.mdx +348 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-items.mdx +286 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-self.mdx +282 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/letter-spacing.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-clamp.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-height.mdx +147 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-image.mdx +80 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-position.mdx +67 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-type.mdx +86 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/margin.mdx +397 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-clip.mdx +66 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-composite.mdx +70 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-image.mdx +933 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-mode.mdx +114 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-origin.mdx +66 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-position.mdx +117 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-repeat.mdx +169 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-size.mdx +104 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-type.mdx +98 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-block-size.mdx +153 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-height.mdx +164 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-inline-size.mdx +185 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-width.mdx +214 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-block-size.mdx +146 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-height.mdx +150 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-inline-size.mdx +153 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-width.mdx +153 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mix-blend-mode.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-fit.mdx +147 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-position.mdx +182 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/opacity.mdx +84 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/order.mdx +94 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-color.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-offset.mdx +72 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-style.mdx +134 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-width.mdx +91 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow-wrap.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow.mdx +665 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overscroll-behavior.mdx +151 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/padding.mdx +232 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective-origin.mdx +127 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective.mdx +137 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-content.mdx +257 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-items.mdx +269 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-self.mdx +257 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/pointer-events.mdx +101 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/position.mdx +399 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/preflight.mdx +291 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/resize.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/responsive-design.mdx +666 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/rotate.mdx +291 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scale.mdx +360 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-behavior.mdx +39 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-margin.mdx +268 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-padding.mdx +255 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-align.mdx +281 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-stop.mdx +198 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-type.mdx +284 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/skew.mdx +352 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke-width.mdx +74 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/styling-with-utility-classes.mdx +1020 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/table-layout.mdx +212 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-align.mdx +162 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-color.mdx +155 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-line.mdx +143 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-style.mdx +75 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-thickness.mdx +75 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-indent.mdx +74 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-overflow.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-shadow.mdx +177 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-transform.mdx +106 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-underline-offset.mdx +74 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-wrap.mdx +144 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/theme.mdx +1142 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/top-right-bottom-left.mdx +296 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/touch-action.mdx +95 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-origin.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-style.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform.mdx +51 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-behavior.mdx +76 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-delay.mdx +76 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-duration.mdx +82 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-property.mdx +137 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-timing-function.mdx +89 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/translate.mdx +487 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/upgrade-guide.mdx +910 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/user-select.mdx +114 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/vertical-align.mdx +194 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/visibility.mdx +287 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/white-space.mdx +211 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/width.mdx +264 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/will-change.mdx +47 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/word-break.mdx +94 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/z-index.mdx +104 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-catalog.md +251 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-index.tsx +237 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-source.txt +6 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/gotchas.md +18 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/scripts/sync_tailwind_docs.py +183 -0
- package/extensions/enact-repo/skills/tdd/SKILL.md +49 -0
- package/extensions/enact-repo/skills/tdd/references/mocking.md +59 -0
- package/extensions/enact-repo/skills/tdd/references/tests.md +77 -0
- package/extensions/enact-repo/skills/teach/SKILL.md +88 -0
- package/extensions/enact-repo/skills/teach/references/GLOSSARY-FORMAT.md +35 -0
- package/extensions/enact-repo/skills/teach/references/LEARNING-RECORD-FORMAT.md +46 -0
- package/extensions/enact-repo/skills/teach/references/MISSION-FORMAT.md +31 -0
- package/extensions/enact-repo/skills/teach/references/PHILOSOPHY.md +65 -0
- package/extensions/enact-repo/skills/teach/references/RESOURCES-FORMAT.md +32 -0
- package/extensions/enact-repo/skills/testing/SKILL.md +54 -0
- package/extensions/enact-repo/skills/to-spec/SKILL.md +85 -0
- package/extensions/enact-repo/skills/to-tickets/SKILL.md +75 -0
- package/extensions/enact-repo/skills/to-tickets/references/TICKET-TEMPLATES.md +39 -0
- package/extensions/enact-repo/skills/triage/SKILL.md +99 -0
- package/extensions/enact-repo/skills/triage/references/AGENT-BRIEF.md +207 -0
- package/extensions/enact-repo/skills/triage/references/NEEDS-INFO-TEMPLATE.md +17 -0
- package/extensions/enact-repo/skills/triage/references/OUT-OF-SCOPE.md +105 -0
- package/extensions/enact-repo/skills/ui-ux-pro-max/SKILL.md +32 -0
- package/extensions/enact-repo/skills/ui-ux-pro-max/references/Workflow.md +207 -0
- package/extensions/enact-repo/skills/ui-ux-pro-max/references/workflow-reference.md +175 -0
- package/extensions/enact-repo/skills/wayfinder/SKILL.md +100 -0
- package/extensions/enact-repo/skills/wayfinder/references/TEMPLATES.md +35 -0
- package/extensions/enact-repo/skills/wayfinder/references/TICKET-TYPES.md +8 -0
- package/extensions/enact-repo/skills/writing-great-skills/SKILL.md +93 -0
- package/extensions/enact-repo/skills/writing-great-skills/references/GLOSSARY.md +201 -0
- package/package.json +18 -14
- package/scripts/enact-extensions.mjs +255 -878
- package/scripts/lib/allowed-plugins.mjs +52 -0
- package/scripts/lib/run-repo-doctor.mjs +571 -0
- package/scripts/lib/run-repo-install.mjs +1579 -0
- package/scripts/lib/run-sync.mjs +1 -1
- package/scripts/lib/run-validate.mjs +23 -37
- package/scripts/lib/skill-validator.mjs +872 -0
- package/spec/enact.json +21 -3
- package/spec/enact.md +13 -12
- package/spec/kimi.json +100 -0
- package/spec/opencode.json +64 -0
- package/dist/install.d.ts +0 -235
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -697
- package/dist/install.js.map +0 -1
- package/dist/internal/claude.d.ts +0 -65
- package/dist/internal/claude.d.ts.map +0 -1
- package/dist/internal/claude.js +0 -200
- package/dist/internal/claude.js.map +0 -1
- package/dist/internal/codex.d.ts +0 -43
- package/dist/internal/codex.d.ts.map +0 -1
- package/dist/internal/codex.js +0 -211
- package/dist/internal/codex.js.map +0 -1
- package/dist/internal/cursor.d.ts +0 -2
- package/dist/internal/cursor.d.ts.map +0 -1
- package/dist/internal/cursor.js +0 -6
- package/dist/internal/cursor.js.map +0 -1
- package/dist/principles.d.ts +0 -28
- package/dist/principles.d.ts.map +0 -1
- package/dist/principles.js +0 -159
- package/dist/principles.js.map +0 -1
- package/dist/provision.d.ts +0 -30
- package/dist/provision.d.ts.map +0 -1
- package/dist/provision.js +0 -202
- package/dist/provision.js.map +0 -1
- package/extensions/dev-state/.agents/plugin.json +0 -36
- package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +0 -194
- package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +0 -4
- package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +0 -130
- package/extensions/enact-context/.agents/plugin.json +0 -41
- package/extensions/enact-context/.mcp.json +0 -8
- package/extensions/enact-context/README.md +0 -25
- package/extensions/enact-context/assets/icon.png +0 -0
- package/extensions/enact-context/assets/logo.png +0 -0
- package/extensions/enact-context/hooks/hooks.json +0 -115
- package/extensions/enact-context/skills/enact-context/SKILL.md +0 -151
- package/extensions/enact-context/skills/enact-context/scripts/install.sh +0 -69
- package/extensions/enact-core/.agents/plugin.json +0 -40
- package/extensions/enact-core/OPERATING-PRINCIPLES.md +0 -7
- package/extensions/enact-core/hooks/hooks.json +0 -26
- package/extensions/enact-evolve/.agents/plugin.json +0 -47
- package/extensions/enact-evolve/agents/evolve-session-analyst.toml +0 -37
- package/extensions/enact-evolve/assets/icon.png +0 -0
- package/extensions/enact-evolve/assets/logo.png +0 -0
- package/extensions/enact-evolve/skills/mined-investigate-loop/SKILL.md +0 -68
- package/extensions/enact-evolve/skills/session-analysis/SKILL.md +0 -98
- package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +0 -343
- package/extensions/enact-factory/.agents/plugin.json +0 -49
- package/extensions/enact-factory/.mcp.json +0 -8
- package/extensions/enact-factory/agents/architect.toml +0 -34
- package/extensions/enact-factory/agents/code-reviewer.toml +0 -33
- package/extensions/enact-factory/agents/critic.toml +0 -39
- package/extensions/enact-factory/agents/executor.toml +0 -26
- package/extensions/enact-factory/agents/explore.toml +0 -25
- package/extensions/enact-factory/agents/planner.toml +0 -26
- package/extensions/enact-factory/agents/verifier.toml +0 -33
- package/extensions/enact-factory/assets/icon.png +0 -0
- package/extensions/enact-factory/assets/logo.png +0 -0
- package/extensions/enact-factory/skills/advisor/SKILL.md +0 -82
- package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +0 -57
- package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +0 -353
- package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +0 -309
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/build-failures.md +0 -60
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/cli-reference.md +0 -87
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md +0 -132
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/troubleshooting.md +0 -53
- package/extensions/enact-factory/skills/cmux-leader/SKILL.md +0 -74
- package/extensions/enact-factory/skills/cmux-send/SKILL.md +0 -50
- package/extensions/enact-factory/skills/committee/SKILL.md +0 -80
- package/extensions/enact-factory/skills/deep-interview/SKILL.md +0 -68
- package/extensions/enact-factory/skills/deslop-handover/SKILL.md +0 -97
- package/extensions/enact-factory/skills/deslop-handover/deslop.py +0 -181
- package/extensions/enact-factory/skills/drive-loop/SKILL.md +0 -394
- package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +0 -127
- package/extensions/enact-factory/skills/handoff/SKILL.md +0 -75
- package/extensions/enact-factory/skills/hyperplan/SKILL.md +0 -59
- package/extensions/enact-factory/skills/looplan/SKILL.md +0 -120
- package/extensions/enact-factory/skills/paseo-dispatch/SKILL.md +0 -141
- package/extensions/enact-factory/skills/plan/SKILL.md +0 -103
- package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +0 -46
- package/extensions/enact-factory/skills/research/SKILL.md +0 -83
- package/extensions/enact-factory/skills/review/SKILL.md +0 -67
- package/extensions/enact-factory/skills/security-research/SKILL.md +0 -57
- package/extensions/enact-factory/skills/tdd/SKILL.md +0 -62
- package/extensions/enact-factory/skills/testing-strategy/SKILL.md +0 -172
- package/extensions/enact-factory/skills/trace/SKILL.md +0 -42
- package/extensions/enact-factory/skills/ultraqa/SKILL.md +0 -85
- package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +0 -56
- package/extensions/enact-factory/skills/workitem-triage/SKILL.md +0 -42
- package/extensions/enact-wiki/.agents/plugin.json +0 -43
- package/extensions/enact-wiki/.mcp.json +0 -15
- package/extensions/enact-wiki/README.md +0 -44
- package/extensions/enact-wiki/assets/icon.png +0 -0
- package/extensions/enact-wiki/assets/logo.png +0 -0
- package/extensions/enact-wiki/skills/document-parser/SKILL.md +0 -17
- package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +0 -60
- package/extensions/enact-wiki/skills/document-parser/skill.json +0 -9
- package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +0 -30
- package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +0 -62
- package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +0 -34
- package/extensions/enact-wiki/skills/enact-wiki/references/query.md +0 -59
- package/extensions/enact-wiki/skills/search-lab/SKILL.md +0 -57
- package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +0 -23
- package/extensions/enact-wiki/skills/wiki/SKILL.md +0 -42
- package/extensions/net-revenue-management/.agents/plugin.json +0 -40
- package/extensions/net-revenue-management/.mcp.json +0 -9
- package/extensions/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -30
- package/extensions/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -31
- package/extensions/plugin-dev/.agents/plugin.json +0 -41
- package/extensions/plugin-dev/agents/agent-creator.md +0 -199
- package/extensions/plugin-dev/agents/plugin-validator.md +0 -91
- package/extensions/plugin-dev/agents/skill-reviewer.md +0 -212
- package/extensions/plugin-dev/skills/agent-development/SKILL.md +0 -641
- package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +0 -250
- package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +0 -461
- package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +0 -246
- package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +0 -216
- package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +0 -226
- package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +0 -464
- package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +0 -474
- package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +0 -176
- package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +0 -227
- package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +0 -227
- package/extensions/plugin-dev/skills/create-plugin/SKILL.md +0 -505
- package/extensions/plugin-dev/skills/hook-development/SKILL.md +0 -861
- package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +0 -55
- package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +0 -57
- package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +0 -48
- package/extensions/plugin-dev/skills/hook-development/references/advanced.md +0 -871
- package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +0 -145
- package/extensions/plugin-dev/skills/hook-development/references/migration.md +0 -392
- package/extensions/plugin-dev/skills/hook-development/references/patterns.md +0 -430
- package/extensions/plugin-dev/skills/hook-development/scripts/README.md +0 -181
- package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +0 -153
- package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +0 -276
- package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +0 -159
- package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +0 -775
- package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +0 -20
- package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +0 -19
- package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +0 -38
- package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +0 -26
- package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +0 -601
- package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +0 -190
- package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +0 -572
- package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +0 -623
- package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +0 -221
- package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +0 -705
- package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +0 -774
- package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +0 -83
- package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +0 -611
- package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +0 -289
- package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +0 -592
- package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +0 -233
- package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +0 -193
- package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +0 -625
- package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +0 -116
- package/extensions/plugin-dev/skills/skill-development/SKILL.md +0 -562
- package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +0 -465
- package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +0 -167
- package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +0 -111
- package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +0 -225
- package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +0 -39
- package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +0 -379
- package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +0 -210
- package/extensions/plugin-dev/skills/start/SKILL.md +0 -82
- package/scripts/check-hooks.mjs +0 -174
- package/scripts/check-principles.mjs +0 -116
- package/scripts/hooks/session-start-drift-check.mjs +0 -49
- package/scripts/install.sh +0 -70
- package/scripts/lib/auto-update.mjs +0 -88
- package/scripts/lib/bundle-hash.mjs +0 -137
- package/scripts/lib/hooks.mjs +0 -585
- package/scripts/lib/ledger.mjs +0 -163
- package/scripts/lib/migrate-artifacts.mjs +0 -144
- package/scripts/lib/outdated.mjs +0 -144
- package/scripts/lib/postinstall-offer.mjs +0 -83
- package/scripts/lib/principles.mjs +0 -109
- package/scripts/lib/provision-mcp.mjs +0 -16
- package/scripts/lib/resolve-plugin-root.mjs +0 -9
- package/scripts/lib/run-install.mjs +0 -507
- package/scripts/lib/run-prune.mjs +0 -94
- package/scripts/lib/run-uninstall.mjs +0 -244
- package/scripts/lib/run-update.mjs +0 -165
- package/scripts/lib/serve.mjs +0 -472
- package/scripts/lib/ups-router.mjs +0 -392
- package/scripts/postinstall.mjs +0 -101
- package/scripts/setup-enact-context.sh +0 -28
- package/scripts/version-bump.sh +0 -484
- package/web/assets/README.md +0 -111
- package/web/assets/logo-full.png +0 -0
- package/web/assets/logo-slim.png +0 -0
- package/web/assets/tokens/base.css +0 -45
- package/web/assets/tokens/colors.css +0 -248
- package/web/assets/tokens/effects.css +0 -24
- package/web/assets/tokens/fonts.css +0 -8
- package/web/assets/tokens/index.css +0 -18
- package/web/assets/tokens/spacing.css +0 -50
- package/web/index.html +0 -1188
package/README.md
CHANGED
|
@@ -2,161 +2,120 @@
|
|
|
2
2
|
|
|
3
3
|
Multi-surface **plugin manifest** tooling for Enact: schemas, validation, sync, and the plugin-dev toolkit for ENACT-native bundles plus derived Claude Code, Codex, and Cursor projections.
|
|
4
4
|
|
|
5
|
-
**Repository:** https://dev.azure.com/amsterdamdatalabs/Enact/_git/enact-extensions
|
|
6
|
-
**Package:** `@amsterdamdatalabs/enact-extensions`
|
|
7
|
-
**CLI:** `enact-extensions`
|
|
5
|
+
- **Repository:** https://dev.azure.com/amsterdamdatalabs/Enact/_git/enact-extensions
|
|
6
|
+
- **Package:** `@amsterdamdatalabs/enact-extensions`
|
|
7
|
+
- **CLI:** `enact-extensions`
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## What this repo is
|
|
10
10
|
|
|
11
|
-
This
|
|
11
|
+
This package owns the manifest tooling and a set of self-contained plugin bundles under `extensions/`:
|
|
12
12
|
|
|
13
|
-
- `spec/` — JSON schemas (
|
|
14
|
-
- `src/` — `create
|
|
15
|
-
- `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `
|
|
16
|
-
- `extensions/<plugin>/` — one
|
|
17
|
-
- `web/` — vendored ADL design assets (`web/assets/tokens/*.css`, `web/assets/logo-*.png`) + `web/index.html` (the management UI served by `serve`)
|
|
13
|
+
- `spec/` — JSON schemas (`enact.json` canonical; per-host schemas for claude/codex/cursor)
|
|
14
|
+
- `src/` — TypeScript library for manifest derivation (`create/`), validation (`validate/`), and repo-local projection (`projection.ts`)
|
|
15
|
+
- `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `list` | `index` | `install --repo` | `uninstall --repo` | `doctor enact-repo --repo`)
|
|
16
|
+
- `extensions/<plugin>/` — one bundle per plugin (e.g. `plugin-dev`, `enact-core`, `enact-factory`, `net-revenue-management`), each with a canonical `.agents/plugin.json`
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
**Scope: repo-local agent setup only.** `enact-extensions install <bundle> --repo <path>` projects host files from `.agents/plugin.json` into a git repository as committed, relative files. This package never installs into host global homes (`~/.claude`, `~/.codex`, `~/.cursor`, `~/.kimi-code`, `~/.enact`), keeps no global install ledger, and never rewrites global agent files (`CLAUDE.md` / `AGENTS.md`); everything global belongs to `enact-vps`, whose global surface sweep also removes legacy global installs made by older versions of this CLI. There is no npm `postinstall`.
|
|
20
19
|
|
|
21
|
-
## Surface
|
|
20
|
+
## Surface contract
|
|
22
21
|
|
|
23
|
-
Each `extensions/<plugin>/.agents/plugin.json` is the canonical source
|
|
22
|
+
Each `extensions/<plugin>/.agents/plugin.json` is the canonical source. `sync` and `install --repo` derive `.claude-plugin/`, `.codex-plugin/`, `.cursor-plugin/`, and `.kimi-plugin/` from it — these projections are generated and never committed.
|
|
24
23
|
|
|
25
|
-
Author skills
|
|
24
|
+
Author skills so they are valid on **all projected surfaces by default**. Use surface-neutral workflow language, treat `.agents/plugin.json` as the source of truth, and isolate host-specific details only when required.
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
- Treat ENACT-native `.agents/plugin.json` as the source of truth, not a sidecar.
|
|
29
|
-
- Only use host-specific details when they are truly required, and isolate them clearly in references or host-specific examples.
|
|
30
|
-
- Do not assume a Claude-only tool, env var, or lifecycle quirk unless the same contract exists on Codex and ENACT, or the skill explicitly scopes that instruction.
|
|
31
|
-
|
|
32
|
-
Do not add ad-hoc sibling packages here (for example legacy `enact-feed-*` MCP prototypes).
|
|
33
|
-
|
|
34
|
-
## Clone
|
|
26
|
+
## Install / build
|
|
35
27
|
|
|
36
28
|
```bash
|
|
37
29
|
git clone https://amsterdamdatalabs@dev.azure.com/amsterdamdatalabs/Enact/_git/enact-extensions
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
This repo has no submodules of its own. Sibling product packages are submoduled by `enact-os/`, not by `enact-extensions/`.
|
|
41
|
-
|
|
42
|
-
## Workspace commands
|
|
43
|
-
|
|
44
|
-
```bash
|
|
30
|
+
cd enact-extensions
|
|
45
31
|
npm install
|
|
46
32
|
npm run build
|
|
47
|
-
npm run validate # validate the plugin-dev bundle
|
|
48
|
-
npm run sync # regenerate host manifests for plugin-dev from .agents/plugin.json
|
|
49
33
|
```
|
|
50
34
|
|
|
51
|
-
|
|
35
|
+
## Tests
|
|
52
36
|
|
|
53
37
|
```bash
|
|
54
|
-
npm
|
|
55
|
-
|
|
56
|
-
node scripts/enact-extensions.mjs install extensions/net-revenue-management --platform enact --global
|
|
57
|
-
node scripts/enact-extensions.mjs install extensions/net-revenue-management --platform enact --local
|
|
58
|
-
|
|
59
|
-
# Install by bare name (resolves from extensions/ tree)
|
|
60
|
-
node scripts/enact-extensions.mjs install net-revenue-management --platform enact --global
|
|
61
|
-
|
|
62
|
-
# Install to multiple platforms at once
|
|
63
|
-
node scripts/enact-extensions.mjs install net-revenue-management --platform all
|
|
64
|
-
node scripts/enact-extensions.mjs install net-revenue-management --platform claude,cursor
|
|
65
|
-
|
|
66
|
-
# List available bundles
|
|
67
|
-
node scripts/enact-extensions.mjs list
|
|
68
|
-
node scripts/enact-extensions.mjs list --json
|
|
69
|
-
|
|
70
|
-
# Generate local discovery index (gitignored artifact; spec/index.json is the committed schema)
|
|
71
|
-
node scripts/enact-extensions.mjs index
|
|
72
|
-
node scripts/enact-extensions.mjs index --stdout
|
|
38
|
+
npm test
|
|
39
|
+
```
|
|
73
40
|
|
|
74
|
-
|
|
75
|
-
node scripts/enact-extensions.mjs uninstall net-revenue-management --platform enact
|
|
76
|
-
node scripts/enact-extensions.mjs uninstall net-revenue-management --platform all
|
|
41
|
+
This runs the full validation suite: principle checks, hook checks, TypeScript build, skill standard validation, and the Node test suite.
|
|
77
42
|
|
|
78
|
-
|
|
79
|
-
node scripts/enact-extensions.mjs log
|
|
80
|
-
node scripts/enact-extensions.mjs log --json
|
|
43
|
+
## Usage
|
|
81
44
|
|
|
82
|
-
|
|
83
|
-
node scripts/enact-extensions.mjs outdated
|
|
84
|
-
node scripts/enact-extensions.mjs outdated --json
|
|
45
|
+
Validate, sync, or list bundles:
|
|
85
46
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
node scripts/enact-extensions.mjs update net-revenue-management
|
|
89
|
-
node scripts/enact-extensions.mjs update --all --dry-run
|
|
47
|
+
```bash
|
|
48
|
+
npm run build
|
|
90
49
|
|
|
91
|
-
|
|
92
|
-
node scripts/enact-extensions.mjs
|
|
93
|
-
node scripts/enact-extensions.mjs install enact-core --platform claude,codex
|
|
50
|
+
node scripts/enact-extensions.mjs validate extensions/net-revenue-management
|
|
51
|
+
node scripts/enact-extensions.mjs sync extensions/plugin-dev
|
|
94
52
|
|
|
95
|
-
|
|
96
|
-
node scripts/enact-extensions.mjs serve
|
|
97
|
-
node scripts/enact-extensions.mjs serve --port 43217 --open
|
|
53
|
+
node scripts/enact-extensions.mjs list
|
|
98
54
|
```
|
|
99
55
|
|
|
100
|
-
|
|
56
|
+
`install` / `uninstall` / `doctor` only accept plugin names listed in
|
|
57
|
+
[`bundled-extensions.json`](bundled-extensions.json) — today that is **`enact-repo`**
|
|
58
|
+
only — and only in repo-local `--repo <path>` form. Any other name is refused with a
|
|
59
|
+
clear error before anything is touched. `scripts/lib/allowed-plugins.mjs` is the CLI's
|
|
60
|
+
allow-list gate; the repo-local install library stays name-agnostic.
|
|
101
61
|
|
|
102
|
-
|
|
62
|
+
### Repo-local install (`--repo`)
|
|
103
63
|
|
|
104
|
-
|
|
105
|
-
cd extensions/enact-factory
|
|
106
|
-
enact-extensions validate
|
|
107
|
-
enact-extensions sync
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Subcommands: `validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve`.
|
|
111
|
-
|
|
112
|
-
Link locally:
|
|
64
|
+
Install a bundle **into a git repository** as committed, relative files, following each host's documented project-scope standard. Nothing is written under `$HOME`, and no absolute path is written into any file. (This replaces the removed `--local` fake-home scope.)
|
|
113
65
|
|
|
114
66
|
```bash
|
|
115
|
-
|
|
67
|
+
enact-extensions install enact-repo --repo <path> [--host claude,codex,cursor,kimi,opencode] [--force]
|
|
68
|
+
enact-extensions install enact-repo --repo <path> --dry-run # preview; writes nothing
|
|
69
|
+
enact-extensions uninstall enact-repo --repo <path> [--purge] [--force]
|
|
70
|
+
enact-extensions uninstall enact-repo --repo <path> --dry-run [--purge] # preview; writes nothing
|
|
71
|
+
enact-extensions doctor enact-repo --repo <path> [--json] # read-only health check
|
|
116
72
|
```
|
|
117
73
|
|
|
118
|
-
|
|
74
|
+
`<path>` must be the git repository root (not a subdirectory, not `$HOME`). `--host` defaults to every repo host the bundle targets.
|
|
119
75
|
|
|
120
|
-
|
|
76
|
+
`--dry-run` prints exactly what would be written, merged, removed, or restored — one line per file, naming the action and the reason (including a drift/conflict refusal, if the real run would refuse) — and exits with the same success/failure a real run would, without touching the filesystem.
|
|
121
77
|
|
|
122
|
-
|
|
123
|
-
2. **`outdated` detects drift per surface** — compares the recorded hash against the current canonical source hash for each `(plugin, surface)` pair. Status values: `fresh` / `outdated` / `orphaned`. Exit 0 always (report only).
|
|
124
|
-
3. **`update` refreshes the installed surfaces** — driven by the ledger; only the surfaces a plugin is actually installed on are updated. `--all` refreshes every outdated surface; `<name>` refreshes that plugin's outdated surfaces; `--dry-run` shows what would change without touching anything.
|
|
125
|
-
4. **Session-start hook (optional)** — `enact-core` owns the advisory `SessionStart` hook (`enact-extensions hook session-start`). Installing `enact-core` on a surface makes the drift check bundle-owned and removes stale pre-bundle standalone drift-hook entries there.
|
|
78
|
+
`doctor enact-repo --repo <path>` is a read-only report: installed?; installed version vs. the current bundle version (outdated?), plus any managed file whose content has drifted from what the current bundle would generate; lock integrity (every managed file present and hash-matching; missing/drifted files listed); per-host status — Claude (marketplace + settings present, with the trust / "start a new session" note above), Codex (files present, plus a read-only check of `~/.codex/config.toml`'s `projects."<path>".trust_level` for this exact repo), Cursor (files present, with an MCP-approval note), Kimi (`.kimi-code/mcp.json` present; whether `~/.kimi-code/config.toml` has the global `# BEGIN ENACT KIMI HOOKS` block installed by enact-vps; and a **Kimi Code workspace-trust** check — Kimi only loads project MCP servers, `.kimi-code/mcp.json` included, once you've opened the repo in Kimi Code and accepted "Trust this folder", so doctor reports trusted/NOT trusted by reading `${KIMI_CODE_HOME:-~/.kimi-code}/workspace-trust/wd_<slug>_<hash>` — never writes it), OpenCode (plugin file present and generated from the current bundle); the required global binaries on `PATH` (`enact-hook`, `lean-ctx`, `crg`/`code-review-graph`, `azure-devops-mcp`) with versions; the root `enact-config.toml` marker (present, parses as TOML, has a `[skills]` table; other tools' tables are never inspected), plus a stale leftover `.agents/enact-repo.toml` reported for information only (never read); an `enact-hook doctor --repo` passthrough when that sub-command is available; and the `enact-hook` per-repo logs — `.agents/hooks/hooks.log` (deny log CSV: `timestamp,surface,reason_id,command,agent_message`) and `.agents/hooks/hooks-activity.log` (activity log CSV: those columns plus `host,kind,event,tool,session,downstream,duration_ms`) — reporting each log's path, whether it exists, its row count, and (deny log only) the last 5 rows, parsed with a CSV reader that handles quoted commas and already-flattened fields. It never writes anything and exits non-zero only when a hard requirement fails (not installed, lock integrity failure, a missing required binary, or a missing, unparseable or `[skills]`-less `enact-config.toml`) — an outdated version, a host trust/approval note, a stale `.agents/enact-repo.toml`, or the hook-log summary is informational only.
|
|
126
79
|
|
|
127
|
-
|
|
80
|
+
| Host | Files written in the repo |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| Claude Code | `.claude-plugin/enact-repo/` (plugin root: `.claude-plugin/plugin.json`, `skills/`, `hooks/hooks.json` with `--host=claude`, `.mcp.json`); `.claude-plugin/marketplace.json` (marketplace `enact-repo-local`, plugin `"source": "./.claude-plugin/enact-repo"`); `.claude/settings.json` merged with `extraKnownMarketplaces.enact-repo-local = {"source": {"source": "directory", "path": "./"}}` and `enabledPlugins["enact-repo@enact-repo-local"] = true`. Loads only after you trust the folder — **and, per live testing, not necessarily in that very first trusted session**: the marketplace registers on first launch but hooks/skills may not finish activating until the *second* Claude Code session in the folder. If hooks/skills seem missing right after install, start a new Claude Code session in this folder before assuming the install failed. |
|
|
83
|
+
| Codex | `.codex/config.toml` `[mcp_servers.<name>]` tables in a marker-delimited block (your TOML and comments are untouched); `.codex/hooks.json` (nested schema, `--host=codex`). Loads only after you trust the project (exact path, no parent inheritance) and review hooks with `/hooks`. No repo marketplace (Codex does not auto-discover one). |
|
|
84
|
+
| Cursor | `.cursor/hooks.json` (`version: 1`, Cursor event names, `--host=cursor`); `.cursor/mcp.json` (`type: "stdio"`). |
|
|
85
|
+
| Kimi Code | `.kimi-code/mcp.json`. Kimi hooks are global-only and are installed by enact-vps, not here. |
|
|
86
|
+
| OpenCode | `.opencode/plugins/enact-repo.ts` (hooks with `--host=opencode`, MCP servers via the `config` hook; no skills path, because OpenCode reads `.agents/skills/` natively). |
|
|
128
87
|
|
|
129
|
-
|
|
88
|
+
Skills: Codex, Cursor, Kimi, and OpenCode share one copy in `.agents/skills/<skill>/`. Claude uses the copy bundled in its plugin. An existing skill dir with the same name that the bundle does not manage is never overwritten, even with `--force`.
|
|
130
89
|
|
|
131
|
-
`
|
|
90
|
+
`lean-ctx` config: regardless of `--host`, the bundle's baseline `lean-ctx/config.toml` and `lean-ctx/layout.toml` are installed as managed whole files at `.agents/lean-ctx/config/lean-ctx/` — every host's `.mcp.json`/hooks equivalent runs `enact-hook lean-ctx ...`, which resolves its config from this repo-local path. Managed like any other whole file: drift is detected, `--force` takes over and records a pre-existing user `config.toml`/`layout.toml` for byte-exact restore on uninstall.
|
|
132
91
|
|
|
133
|
-
|
|
92
|
+
Always written: the `[skills]` table of root `enact-config.toml` (the managed-repo marker the `enact-hook` runtime checks; the file is shared, and each root table has one owner — `version`/`[hooks]`/`[rules]`/`[repo]` enact-hook, `[skills]` enact-extensions, `[controls]` enact-repo-controls). If the file is missing, install creates it with `version = 1` plus `[skills]`. If it lacks `[skills]`, install appends a `[skills]` block (`version = 1`) as text, leaving every other byte intact. If `[skills]` already exists, install leaves it alone. Install never writes `[hooks]`, refuses to append to a file that is not valid TOML, and no longer creates `.agents/enact-repo.toml`; the baseline `lean-ctx` config (`config.toml`, `layout.toml`) as managed whole files at `.agents/lean-ctx/config/lean-ctx/`; six managed lines in `.agents/.gitignore` — `/lean-ctx/data/`, `/lean-ctx/cache/`, `/lean-ctx/state/`, `/lean-ctx/bin/` (lean-ctx's runtime-generated dirs stay out of git; `config/` itself is committed), plus `/hooks/hooks.log` and `/hooks/hooks-activity.log` (the `enact-hook` runtime's own deny/activity logs under `.agents/hooks/`, same treatment: a plain uninstall keeps these two lines while either log file still exists on disk, `--purge` removes the log files themselves first); and `.agents/enact-repo.lock.json`. Commit all of it except what `.gitignore` excludes.
|
|
134
93
|
|
|
135
|
-
|
|
94
|
+
The lock records every managed file (sha256), every entry merged into a user file, and the plugin version, all as relative paths:
|
|
136
95
|
|
|
137
|
-
|
|
96
|
+
- **Re-runs are idempotent.** An unchanged bundle produces no diff. Narrowing `--host` removes the dropped hosts' managed content.
|
|
97
|
+
- **Merged user files are edited surgically.** `.claude/settings.json`, `.cursor/hooks.json`, `.cursor/mcp.json`, `.kimi-code/mcp.json`, `.codex/hooks.json`, and `.codex/config.toml` only gain or lose the bundle's own entries. Key order and indentation are preserved.
|
|
98
|
+
- **Refusals (override with `--force`).** Install stops if a managed file or entry was edited since the last install, or if a same-named MCP server or marketplace entry exists that the bundle does not own. The error names each file.
|
|
99
|
+
- **Uninstall removes exactly what the lock records.** It deletes a merged file only if install created it and it is now empty, then deletes the lock. `enact-config.toml` stays unless you pass `--purge`. `--purge` cuts only the `[skills]` block install wrote, at text level; it refuses if that block was edited (with `--force`, it keeps the block). It deletes the file only if install created it and nothing but `version = 1` remains.
|
|
100
|
+
|
|
101
|
+
Install the CLI itself globally (the CLI binary only — no plugins, no host config):
|
|
138
102
|
|
|
139
103
|
```bash
|
|
140
|
-
|
|
141
|
-
enact-extensions
|
|
104
|
+
bash dev-install-and-run.sh # npm install, build, npm pack + npm install -g, verify
|
|
105
|
+
enact-extensions doctor enact-repo --repo <path>
|
|
142
106
|
```
|
|
143
107
|
|
|
108
|
+
The published package ships `bundled-extensions.json`, `dist/`, `spec/`, the CLI scripts, and `extensions/enact-repo` only (`tests/package-contents.test.mjs` pins this and installs the packed tarball into a temp prefix).
|
|
109
|
+
|
|
144
110
|
## Layout
|
|
145
111
|
|
|
146
112
|
```text
|
|
147
|
-
enact-extensions/
|
|
148
|
-
├── src/ spec/ scripts/
|
|
149
|
-
├──
|
|
150
|
-
|
|
151
|
-
└── extensions/ # self-contained plugin bundles
|
|
152
|
-
├── plugin-dev/ # plugin authoring toolkit
|
|
153
|
-
├── cmux/ devops/ dev-state/ # first-party skill bundles
|
|
154
|
-
├── enact-context/ enact-factory/ enact-loop/ enact-wiki/
|
|
155
|
-
└── net-revenue-management/ # product and platform bundles
|
|
113
|
+
enact-extensions/
|
|
114
|
+
├── src/ spec/ scripts/ # manifest library + CLI
|
|
115
|
+
├── generated/ # gitignored discovery artifacts
|
|
116
|
+
└── extensions/ # self-contained plugin bundles
|
|
156
117
|
```
|
|
157
118
|
|
|
158
119
|
## enact-os integration
|
|
159
120
|
|
|
160
|
-
`enact-os` submodules
|
|
161
|
-
|
|
162
|
-
Host plugin delivery now lives in this repo for the shipped bundles under `extensions/`, including `enact-context`, `enact-factory`, `enact-loop`, and `enact-wiki`. **enact-loop is the default/recommended loop and contract-runner product.** Product runtimes still live in their own repos; use `enact-extensions install <name> --platform <surface>` for host registration, while repo-local commands such as `enact-factory setup` or `enact-factory plugins delivery` persist local runtime state.
|
|
121
|
+
`enact-os` submodules this repo at `enact-extensions/` for manifest tooling and separately submodules product packages at top level. This package is repo-local agent setup only (`enact-repo` — see [`bundled-extensions.json`](bundled-extensions.json)); anything global belongs to `enact-vps`. Repo-local commands such as `enact-factory setup` manage runtime state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enact.d.ts","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"enact.d.ts","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc,CA8B3E"}
|
package/dist/create/enact.js
CHANGED
|
@@ -27,6 +27,8 @@ export function createEnactManifest(input) {
|
|
|
27
27
|
manifest.factory = input.factory;
|
|
28
28
|
if (input.operator)
|
|
29
29
|
manifest.operator = input.operator;
|
|
30
|
+
if (input.principles)
|
|
31
|
+
manifest.principles = input.principles;
|
|
30
32
|
return manifest;
|
|
31
33
|
}
|
|
32
34
|
//# sourceMappingURL=enact.js.map
|
package/dist/create/enact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enact.js","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,2DAA2D,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,IAAI,2BAA2B;QACpE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,eAAe,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;KAC5C,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7D,IAAI,KAAK,CAAC,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"enact.js","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,2DAA2D,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,IAAI,2BAA2B;QACpE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,eAAe,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;KAC5C,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7D,IAAI,KAAK,CAAC,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAE7D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/create/index.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export { createEnactManifest } from "./enact.js";
|
|
|
3
3
|
export { deriveClaudeManifest } from "./claude.js";
|
|
4
4
|
export { deriveCodexManifest } from "./codex.js";
|
|
5
5
|
export { deriveCursorManifest } from "./cursor.js";
|
|
6
|
+
export { deriveKimiManifest } from "./kimi.js";
|
|
7
|
+
export { deriveOpenCodeManifest, deriveOpenCodeMcp, deriveOpenCodePlugin, unmappedOpenCodeHookEvents, fallbackOpenCodeHookEvents, } from "./opencode.js";
|
|
8
|
+
export type { OpenCodeLocalMcpServer, OpenCodeHookFallback, OpenCodePluginSource } from "./opencode.js";
|
|
6
9
|
export declare function deriveManifest(platform: ProjectionPlatform, enact: PluginManifest): PluginManifest;
|
|
7
10
|
export declare function resolveTargets(enact: PluginManifest): TargetPlatform[];
|
|
8
11
|
export declare function resolveProjectionTargets(enact: PluginManifest): ProjectionPlatform[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAaxG,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,cAAc,GACpB,cAAc,CAEhB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,CAMtE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,EAAE,CAMpF;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG;IACxD,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB,CASA;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAC7B,UAAU,EAAE,CASd;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,GACpB,cAAc,CAKhB"}
|
package/dist/create/index.js
CHANGED
|
@@ -6,14 +6,20 @@ import { createEnactManifest } from "./enact.js";
|
|
|
6
6
|
import { deriveClaudeManifest } from "./claude.js";
|
|
7
7
|
import { deriveCodexManifest } from "./codex.js";
|
|
8
8
|
import { deriveCursorManifest } from "./cursor.js";
|
|
9
|
+
import { deriveKimiManifest } from "./kimi.js";
|
|
10
|
+
import { deriveOpenCodeManifest } from "./opencode.js";
|
|
9
11
|
export { createEnactManifest } from "./enact.js";
|
|
10
12
|
export { deriveClaudeManifest } from "./claude.js";
|
|
11
13
|
export { deriveCodexManifest } from "./codex.js";
|
|
12
14
|
export { deriveCursorManifest } from "./cursor.js";
|
|
15
|
+
export { deriveKimiManifest } from "./kimi.js";
|
|
16
|
+
export { deriveOpenCodeManifest, deriveOpenCodeMcp, deriveOpenCodePlugin, unmappedOpenCodeHookEvents, fallbackOpenCodeHookEvents, } from "./opencode.js";
|
|
13
17
|
const DERIVERS = {
|
|
14
18
|
claude: deriveClaudeManifest,
|
|
15
19
|
codex: deriveCodexManifest,
|
|
16
20
|
cursor: deriveCursorManifest,
|
|
21
|
+
kimi: deriveKimiManifest,
|
|
22
|
+
opencode: deriveOpenCodeManifest,
|
|
17
23
|
};
|
|
18
24
|
export function deriveManifest(platform, enact) {
|
|
19
25
|
return DERIVERS[platform](enact);
|
package/dist/create/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PluginManifest } from "../internal/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Derive the Kimi manifest (`.kimi-plugin/plugin.json`) from the canonical
|
|
4
|
+
* Enact manifest.
|
|
5
|
+
*
|
|
6
|
+
* v2 scope is project metadata + skills + commands. `hooks` and `mcpServers`
|
|
7
|
+
* are NOT inlined here — they need file reads from the plugin root (canonical
|
|
8
|
+
* `hooks` is a nested wrapper, `mcpServers` is a path). `installKimiPluginBundle`
|
|
9
|
+
* finalizes the manifest by inlining them after projecting the bundle onto disk.
|
|
10
|
+
* `agents` is still omitted because Kimi has no such field.
|
|
11
|
+
*
|
|
12
|
+
* Unlike Claude and Cursor, the default `skills` path is NOT stripped: Kimi has
|
|
13
|
+
* no skills auto-discovery, so an omitted `skills` field means zero skills.
|
|
14
|
+
*/
|
|
15
|
+
export declare function deriveKimiManifest(enact: PluginManifest): PluginManifest;
|
|
16
|
+
//# sourceMappingURL=kimi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../src/create/kimi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAiC3D;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAiCxE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { DEFAULT_PATHS, MANIFEST_FIELDS } from "../internal/platform.js";
|
|
2
|
+
import { pickManifestFields, withPlatformKeyword } from "../internal/pick.js";
|
|
3
|
+
/** The only `interface` keys Kimi's manifest parser reads (readInterface). */
|
|
4
|
+
const KIMI_INTERFACE_FIELDS = [
|
|
5
|
+
"displayName",
|
|
6
|
+
"shortDescription",
|
|
7
|
+
"longDescription",
|
|
8
|
+
"developerName",
|
|
9
|
+
"websiteURL",
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* Project the canonical Enact `interface` block onto the five keys Kimi reads.
|
|
13
|
+
* Enact-only keys (category, capabilities, composerIcon, logo) are dropped —
|
|
14
|
+
* Kimi ignores them, and the derived manifest schema is closed.
|
|
15
|
+
* Returns undefined when nothing survives, so the field is omitted entirely.
|
|
16
|
+
*/
|
|
17
|
+
function kimiInterface(raw, homepage) {
|
|
18
|
+
const source = raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const key of KIMI_INTERFACE_FIELDS) {
|
|
21
|
+
const value = source[key];
|
|
22
|
+
if (typeof value === "string" && value.trim())
|
|
23
|
+
out[key] = value;
|
|
24
|
+
}
|
|
25
|
+
// Enact has no `websiteURL`; Kimi shows it as the plugin's link, so fall back
|
|
26
|
+
// to the manifest's homepage.
|
|
27
|
+
if (out.websiteURL === undefined && typeof homepage === "string" && homepage.trim()) {
|
|
28
|
+
out.websiteURL = homepage;
|
|
29
|
+
}
|
|
30
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Derive the Kimi manifest (`.kimi-plugin/plugin.json`) from the canonical
|
|
34
|
+
* Enact manifest.
|
|
35
|
+
*
|
|
36
|
+
* v2 scope is project metadata + skills + commands. `hooks` and `mcpServers`
|
|
37
|
+
* are NOT inlined here — they need file reads from the plugin root (canonical
|
|
38
|
+
* `hooks` is a nested wrapper, `mcpServers` is a path). `installKimiPluginBundle`
|
|
39
|
+
* finalizes the manifest by inlining them after projecting the bundle onto disk.
|
|
40
|
+
* `agents` is still omitted because Kimi has no such field.
|
|
41
|
+
*
|
|
42
|
+
* Unlike Claude and Cursor, the default `skills` path is NOT stripped: Kimi has
|
|
43
|
+
* no skills auto-discovery, so an omitted `skills` field means zero skills.
|
|
44
|
+
*/
|
|
45
|
+
export function deriveKimiManifest(enact) {
|
|
46
|
+
const picked = pickManifestFields(enact, MANIFEST_FIELDS.kimi);
|
|
47
|
+
const iface = kimiInterface(enact.interface, enact.homepage);
|
|
48
|
+
const manifest = {
|
|
49
|
+
...picked,
|
|
50
|
+
description: (typeof picked.description === "string" ? picked.description : undefined) ??
|
|
51
|
+
`${enact.name} plugin for Kimi.`,
|
|
52
|
+
keywords: withPlatformKeyword(Array.isArray(picked.keywords) ? picked.keywords : undefined, "kimi"),
|
|
53
|
+
// Kimi requires component paths to start with "./" and to resolve inside the
|
|
54
|
+
// plugin root; anything else is an error diagnostic.
|
|
55
|
+
skills: normalizeKimiPath(picked.skills) ?? DEFAULT_PATHS.skills,
|
|
56
|
+
};
|
|
57
|
+
const commands = normalizeKimiPath(picked.commands);
|
|
58
|
+
if (commands)
|
|
59
|
+
manifest.commands = commands;
|
|
60
|
+
else
|
|
61
|
+
delete manifest.commands;
|
|
62
|
+
// Hooks and MCP servers are finalized at install time (see
|
|
63
|
+
// installKimiPluginBundle). Strip any raw canonical values so the derived
|
|
64
|
+
// manifest is valid for `validateKimiManifest` and sync projections.
|
|
65
|
+
delete manifest.hooks;
|
|
66
|
+
delete manifest.mcpServers;
|
|
67
|
+
delete manifest.skillInstructions;
|
|
68
|
+
if (iface)
|
|
69
|
+
manifest.interface = iface;
|
|
70
|
+
else
|
|
71
|
+
delete manifest.interface;
|
|
72
|
+
return manifest;
|
|
73
|
+
}
|
|
74
|
+
/** Coerce a manifest path to Kimi's required leading-"./" form. */
|
|
75
|
+
function normalizeKimiPath(value) {
|
|
76
|
+
if (typeof value !== "string")
|
|
77
|
+
return undefined;
|
|
78
|
+
const trimmed = value.trim();
|
|
79
|
+
if (!trimmed)
|
|
80
|
+
return undefined;
|
|
81
|
+
if (trimmed.startsWith("./"))
|
|
82
|
+
return trimmed;
|
|
83
|
+
if (trimmed.startsWith("../") || trimmed.startsWith("/"))
|
|
84
|
+
return undefined;
|
|
85
|
+
return `./${trimmed}`;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=kimi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../src/create/kimi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { PluginManifest } from "../internal/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Derive the OpenCode descriptor (`.opencode-plugin/plugin.json`) from the
|
|
4
|
+
* canonical Enact manifest. OpenCode has no documented plugin manifest file of
|
|
5
|
+
* its own — this descriptor is Enact-internal bookkeeping (validated by
|
|
6
|
+
* spec/opencode.json) that records project metadata plus the canonical
|
|
7
|
+
* `hooks`/`mcpServers` SOURCE PATHS (not their resolved content). A future
|
|
8
|
+
* installer reads those paths, loads the referenced JSON, and calls
|
|
9
|
+
* {@link deriveOpenCodeMcp} / {@link deriveOpenCodePlugin} to generate the
|
|
10
|
+
* real OpenCode artifacts: a root `opencode.json` MCP fragment and a
|
|
11
|
+
* `.opencode/plugins/<name>.ts` file.
|
|
12
|
+
*/
|
|
13
|
+
export declare function deriveOpenCodeManifest(enact: PluginManifest): PluginManifest;
|
|
14
|
+
export interface OpenCodeLocalMcpServer {
|
|
15
|
+
type: "local";
|
|
16
|
+
command: string[];
|
|
17
|
+
environment?: Record<string, string>;
|
|
18
|
+
cwd?: string;
|
|
19
|
+
enabled: true;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Project a canonical `.mcp.json` document
|
|
23
|
+
* (`{mcpServers:{name:{command,args,env,cwd?}}}`) into OpenCode's root
|
|
24
|
+
* `opencode.json` MCP fragment.
|
|
25
|
+
*
|
|
26
|
+
* Source (verified 2026-09-14, this session): https://opencode.ai/docs —
|
|
27
|
+
* OpenCode MCP servers are declared directly under `"mcp"` in `opencode.json`
|
|
28
|
+
* as `{"<name>": {"type":"local", "command":["cmd", ...args],
|
|
29
|
+
* "environment": {...}, "cwd": "...", "enabled": true}}`. There is no
|
|
30
|
+
* `servers` wrapper (unlike the canonical `mcpServers` key) and no `disabled`
|
|
31
|
+
* key — OpenCode uses `enabled` and we always emit `enabled: true` for a
|
|
32
|
+
* server the canonical manifest declares (a disabled server simply would not
|
|
33
|
+
* be declared).
|
|
34
|
+
*
|
|
35
|
+
* Servers without a `command` (e.g. a remote/HTTP-only definition) have no
|
|
36
|
+
* documented OpenCode "local" equivalent here and are skipped rather than
|
|
37
|
+
* guessed at.
|
|
38
|
+
*/
|
|
39
|
+
export declare function deriveOpenCodeMcp(canonicalMcp: unknown): {
|
|
40
|
+
mcp: Record<string, OpenCodeLocalMcpServer>;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Project a canonical matcher (e.g. `"Bash"`, or
|
|
44
|
+
* `"Write|Edit|MultiEdit|StrReplace|str_replace_editor|..."`) into an
|
|
45
|
+
* OpenCode-tool-id alternation (e.g. `"bash"`, `"write|edit"`), deduping
|
|
46
|
+
* repeated targets. A token with no known canonical mapping is kept
|
|
47
|
+
* (lowercased) as a passthrough rather than dropped -- combined with the
|
|
48
|
+
* case-insensitive ANCHORED matching {@link emitToolMethod} generates, this
|
|
49
|
+
* is a safety net that still matches an already-OpenCode-shaped or unknown
|
|
50
|
+
* matcher instead of silently never firing.
|
|
51
|
+
*/
|
|
52
|
+
export declare function projectMatcherToOpenCode(matcher: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Return canonical hook events that declare active commands but have no
|
|
55
|
+
* documented OpenCode equivalent in {@link OPENCODE_HOOK_EVENT_MAP} AND no
|
|
56
|
+
* entry in {@link OPENCODE_HOOK_EVENT_FALLBACK} (a fallback-projected event
|
|
57
|
+
* is not "unmapped" — see {@link fallbackOpenCodeHookEvents}).
|
|
58
|
+
*/
|
|
59
|
+
export declare function unmappedOpenCodeHookEvents(canonicalHooks: unknown): string[];
|
|
60
|
+
/** One canonical event projected via {@link OPENCODE_HOOK_EVENT_FALLBACK}. */
|
|
61
|
+
export interface OpenCodeHookFallback {
|
|
62
|
+
/** The canonical event with no direct OpenCode equivalent (e.g. "SessionEnd"). */
|
|
63
|
+
from: string;
|
|
64
|
+
/** The canonical event whose OpenCode handler it was folded into (e.g. "SessionIdle"). */
|
|
65
|
+
to: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Return the canonical hook events projected via
|
|
69
|
+
* {@link OPENCODE_HOOK_EVENT_FALLBACK} that declare active commands — e.g.
|
|
70
|
+
* `[{from:"SessionEnd", to:"SessionIdle"}]`. These are NOT reported by
|
|
71
|
+
* {@link unmappedOpenCodeHookEvents}: they run, just on a substitute event.
|
|
72
|
+
*/
|
|
73
|
+
export declare function fallbackOpenCodeHookEvents(canonicalHooks: unknown): OpenCodeHookFallback[];
|
|
74
|
+
/** Input to {@link deriveOpenCodePlugin}: the three canonical bundle sources a generated OpenCode plugin carries. */
|
|
75
|
+
export interface OpenCodePluginSource {
|
|
76
|
+
/** Canonical hooks.json document, i.e. `{hooks:{EventName:[...]}}`. */
|
|
77
|
+
hooks?: unknown;
|
|
78
|
+
/** Canonical .mcp.json document, i.e. `{mcpServers:{name:{command,args,env,cwd?}}}`. */
|
|
79
|
+
mcpServers?: unknown;
|
|
80
|
+
/**
|
|
81
|
+
* Plugin-relative path to the bundle's skills directory (e.g. `"./skills"`),
|
|
82
|
+
* if the bundle has one. Resolved at runtime as `join(directory, skillsDir)`
|
|
83
|
+
* — `directory` is the OpenCode-supplied project root, never
|
|
84
|
+
* `${CLAUDE_PLUGIN_ROOT}` (OpenCode does not set that env var).
|
|
85
|
+
*/
|
|
86
|
+
skillsDir?: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Generate the TypeScript source for a SINGLE OpenCode project plugin
|
|
90
|
+
* (`.opencode/plugins/<pluginName>.ts`) that carries a bundle's hooks, MCP
|
|
91
|
+
* servers AND skills together — see the module-level owner-decision comment
|
|
92
|
+
* above for the live-evidence basis of every mapping choice below.
|
|
93
|
+
*
|
|
94
|
+
* Runtime choice: OpenCode plugins run on Bun. This generated file uses
|
|
95
|
+
* `Bun.spawn` rather than the Bun Shell `$` helper because `Bun.spawn` has a
|
|
96
|
+
* documented `timeout` + `killSignal` option
|
|
97
|
+
* (https://bun.com/docs/api/spawn, verified 2026-09-14) needed to honor each
|
|
98
|
+
* canonical hook command's `timeout` (seconds), and gives direct access to
|
|
99
|
+
* `stdin`, `exitCode`, `stdout`/`stderr` text.
|
|
100
|
+
*
|
|
101
|
+
* Truthful failures: a hook command that crashes (e.g. `Bun.spawn` itself
|
|
102
|
+
* throws) or exits non-zero for a reason other than a PreToolUse deny is
|
|
103
|
+
* logged to stderr with the plugin's name — never silently swallowed, and
|
|
104
|
+
* never treated as a block (fail open). The PreToolUse deny throw itself
|
|
105
|
+
* happens OUTSIDE any try/catch in the generated code, so it can never be
|
|
106
|
+
* caught and swallowed by error handling elsewhere in the same method.
|
|
107
|
+
*
|
|
108
|
+
* PreToolUse (`tool.execute.before`) deny contract: the configured command
|
|
109
|
+
* receives `{hook_event_name, tool_name, tool_input, cwd, session_id}` as
|
|
110
|
+
* JSON on stdin. The call is blocked (the generated hook throws) when the
|
|
111
|
+
* command exits with code 2, or its stdout parses as JSON with
|
|
112
|
+
* `hookSpecificOutput.permissionDecision === "deny"`.
|
|
113
|
+
*
|
|
114
|
+
* UserPromptSubmit (`chat.message` + `experimental.chat.system.transform`):
|
|
115
|
+
* the configured command receives `{hook_event_name:"UserPromptSubmit",
|
|
116
|
+
* prompt, cwd, session_id}` as JSON on stdin. Its `hookSpecificOutput.additionalContext`
|
|
117
|
+
* (or, failing that, its raw stdout) is stored keyed by session id and
|
|
118
|
+
* injected into `output.system` the next time `experimental.chat.system.transform`
|
|
119
|
+
* fires for that same session — see the module comment for why this replaced
|
|
120
|
+
* a direct `output.parts` push.
|
|
121
|
+
*
|
|
122
|
+
* Canonical events with no documented OpenCode equivalent and no fallback are
|
|
123
|
+
* NOT wired into any hook; call {@link unmappedOpenCodeHookEvents} to get
|
|
124
|
+
* that list. Events projected via {@link OPENCODE_HOOK_EVENT_FALLBACK} (e.g.
|
|
125
|
+
* SessionEnd -> SessionIdle) ARE wired in, under their fallback target's
|
|
126
|
+
* bucket; call {@link fallbackOpenCodeHookEvents} to get that list.
|
|
127
|
+
*/
|
|
128
|
+
export declare function deriveOpenCodePlugin(source: OpenCodePluginSource, pluginName: string): string;
|
|
129
|
+
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/create/opencode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAY5E;AAMD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;CACf;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CAAE,CAmCxG;AAmJD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYhE;AA2DD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,EAAE,CAS5E;AAED,8EAA8E;AAC9E,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAO1F;AA8JD,qHAAqH;AACrH,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAsO7F"}
|