@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
|
@@ -1,392 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ups-router.mjs — pure, testable module for the UserPromptSubmit keyword-router.
|
|
3
|
-
*
|
|
4
|
-
* Discovers plugin bundles and their skills, extracts explicit trigger phrases
|
|
5
|
-
* from SKILL.md frontmatter, and routes a user prompt to matching skills.
|
|
6
|
-
*
|
|
7
|
-
* Two exports:
|
|
8
|
-
* buildSkillCatalog(extensionsDir) → CatalogEntry[]
|
|
9
|
-
* routePrompt(prompt, catalog) → RouteResult
|
|
10
|
-
*
|
|
11
|
-
* Both are deterministic and side-effect free (no network, no writes, no clock).
|
|
12
|
-
*/
|
|
13
|
-
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
14
|
-
import { join, resolve } from "node:path";
|
|
15
|
-
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
// Types (JSDoc)
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @typedef {{ skill: string, plugin: string, keywords: string[], invoke: string }} CatalogEntry
|
|
22
|
-
* @typedef {{ skill: string, plugin: string, invoke: string, reason: string }} RouteMatch
|
|
23
|
-
* @typedef {{ matches: RouteMatch[], additionalContext: string|null }} RouteResult
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// Stop-word list — short or trivial tokens that should never fire a match.
|
|
28
|
-
// The list is intentionally broad: we want precision over recall in the router
|
|
29
|
-
// so that only genuinely skill-relevant keywords generate matches.
|
|
30
|
-
// ---------------------------------------------------------------------------
|
|
31
|
-
|
|
32
|
-
const STOP_WORDS = new Set([
|
|
33
|
-
// articles, conjunctions, prepositions
|
|
34
|
-
"a", "an", "the", "and", "or", "but", "in", "on", "at", "to", "for",
|
|
35
|
-
"of", "with", "by", "from", "up", "as", "via", "per",
|
|
36
|
-
// pronouns / determiners
|
|
37
|
-
"it", "its", "this", "that", "these", "those", "i", "we", "you", "he",
|
|
38
|
-
"she", "they", "my", "our", "your", "their", "its", "all", "any", "both",
|
|
39
|
-
// copula / auxiliaries
|
|
40
|
-
"is", "are", "was", "were", "be", "been", "being", "have", "has", "had",
|
|
41
|
-
"do", "does", "did", "will", "would", "could", "should", "may", "might",
|
|
42
|
-
"can", "shall", "must",
|
|
43
|
-
// high-frequency verbs that are not skill identifiers
|
|
44
|
-
"get", "set", "put", "let", "run", "use", "add", "see", "say", "ask",
|
|
45
|
-
"go", "give", "make", "take", "want", "need", "know", "keep", "find",
|
|
46
|
-
"call", "read", "work", "look", "show", "used", "each", "also", "into",
|
|
47
|
-
"when", "then", "than", "just", "more", "most", "only", "such", "even",
|
|
48
|
-
"now", "new", "not", "no", "so", "if", "how", "what", "which", "where",
|
|
49
|
-
"who", "why", "over", "after", "before", "about", "like",
|
|
50
|
-
// generic nouns too broad to be useful keywords
|
|
51
|
-
"task", "work", "file", "data", "code", "tool", "type", "name", "list",
|
|
52
|
-
"item", "part", "case", "time", "step", "way", "mode", "form", "end",
|
|
53
|
-
"start", "path", "user", "output", "input", "result", "context", "note",
|
|
54
|
-
"example", "reason", "detail", "value", "field", "key", "state", "stage",
|
|
55
|
-
]);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Return true when token should be excluded as a keyword.
|
|
59
|
-
* Tokens shorter than 3 characters, or pure stop-words, are excluded.
|
|
60
|
-
*
|
|
61
|
-
* @param {string} token
|
|
62
|
-
* @returns {boolean}
|
|
63
|
-
*/
|
|
64
|
-
function isStopWord(token) {
|
|
65
|
-
if (token.length < 3) return true;
|
|
66
|
-
return STOP_WORDS.has(token.toLowerCase());
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
// Frontmatter parsing
|
|
71
|
-
// ---------------------------------------------------------------------------
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Extract the YAML frontmatter block from a Markdown file's text.
|
|
75
|
-
* Returns null when no frontmatter block is found.
|
|
76
|
-
*
|
|
77
|
-
* @param {string} text
|
|
78
|
-
* @returns {string|null}
|
|
79
|
-
*/
|
|
80
|
-
function extractFrontmatterBlock(text) {
|
|
81
|
-
if (!text.startsWith("---")) return null;
|
|
82
|
-
const m = /^---\n([\s\S]*?)\n---/.exec(text);
|
|
83
|
-
return m ? m[1] : null;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Parse a specific scalar field from a raw YAML frontmatter block.
|
|
88
|
-
* Handles both single-line `field: "value"` and block-scalar `field: >\n val`.
|
|
89
|
-
*
|
|
90
|
-
* @param {string} block Raw frontmatter text (between the --- delimiters).
|
|
91
|
-
* @param {string} field Field name to extract.
|
|
92
|
-
* @returns {string|null}
|
|
93
|
-
*/
|
|
94
|
-
function parseFrontmatterField(block, field) {
|
|
95
|
-
// Match single-line scalar: field: value (quoted or bare).
|
|
96
|
-
// After extracting the value, skip it when it is a block-scalar indicator
|
|
97
|
-
// (">", ">-", "|", "|-", etc.) so those fall through to the block-scalar branch.
|
|
98
|
-
const singleLine = new RegExp(`(?:^|\\n)${field}:\\s*(?:["']([^"'\\n]*)["']|(.+))`, "m");
|
|
99
|
-
const sl = singleLine.exec(block);
|
|
100
|
-
if (sl) {
|
|
101
|
-
const raw = (sl[1] ?? sl[2] ?? "").trim();
|
|
102
|
-
// Reject YAML block-scalar indicators so we fall through to the block branch.
|
|
103
|
-
if (raw && !/^[>|]-?$/.test(raw)) {
|
|
104
|
-
return raw || null;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Match block scalar (folded or literal): field: >-\n line1\n line2
|
|
109
|
-
const blockScalar = new RegExp(`(?:^|\\n)${field}:\\s*[>|]-?\\n((?: [^\\n]*\\n?)+)`, "m");
|
|
110
|
-
const bs = blockScalar.exec(block);
|
|
111
|
-
if (bs) {
|
|
112
|
-
return bs[1]
|
|
113
|
-
.split("\n")
|
|
114
|
-
.map((l) => l.replace(/^ /, "").trim())
|
|
115
|
-
.filter(Boolean)
|
|
116
|
-
.join(" ")
|
|
117
|
-
.trim() || null;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// ---------------------------------------------------------------------------
|
|
124
|
-
// Keyword extraction from a SKILL.md description
|
|
125
|
-
// ---------------------------------------------------------------------------
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Extract explicit trigger keywords from a skill description.
|
|
129
|
-
* Looks for quoted phrases after "Triggers on" (e.g. Triggers on "foo", "bar").
|
|
130
|
-
*
|
|
131
|
-
* @param {string} description
|
|
132
|
-
* @returns {string[]}
|
|
133
|
-
*/
|
|
134
|
-
function extractExplicitTriggers(description) {
|
|
135
|
-
const triggerSection = /[Tt]riggers?\s+on\s+(.*)/;
|
|
136
|
-
const m = triggerSection.exec(description);
|
|
137
|
-
if (!m) return [];
|
|
138
|
-
const section = m[1];
|
|
139
|
-
// Extract all double-quoted tokens from the trigger section.
|
|
140
|
-
const quoted = [];
|
|
141
|
-
const re = /"([^"]+)"/g;
|
|
142
|
-
let hit;
|
|
143
|
-
while ((hit = re.exec(section)) !== null) {
|
|
144
|
-
const phrase = hit[1].trim().toLowerCase();
|
|
145
|
-
if (phrase && !isStopWord(phrase)) quoted.push(phrase);
|
|
146
|
-
}
|
|
147
|
-
return quoted;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Derive the full keyword set for a single skill.
|
|
152
|
-
* Only explicit `Triggers on "..."` phrases and the skill name are used.
|
|
153
|
-
* Do not mine arbitrary words from descriptions; that makes everyday prompts
|
|
154
|
-
* like "change this contract" trigger unrelated skill hints.
|
|
155
|
-
*
|
|
156
|
-
* @param {string} skillName
|
|
157
|
-
* @param {string|null} description
|
|
158
|
-
* @returns {string[]}
|
|
159
|
-
*/
|
|
160
|
-
function deriveKeywords(skillName, description) {
|
|
161
|
-
const seen = new Set();
|
|
162
|
-
const push = (kw) => {
|
|
163
|
-
const k = kw.toLowerCase().trim();
|
|
164
|
-
if (k && !seen.has(k) && !isStopWord(k)) { seen.add(k); }
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
// Always include the skill name itself (unless it is a stop-word).
|
|
168
|
-
if (skillName) push(skillName);
|
|
169
|
-
|
|
170
|
-
if (description) {
|
|
171
|
-
// Explicit triggers have highest priority.
|
|
172
|
-
for (const t of extractExplicitTriggers(description)) push(t);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return [...seen];
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// ---------------------------------------------------------------------------
|
|
179
|
-
// Directory helpers
|
|
180
|
-
// ---------------------------------------------------------------------------
|
|
181
|
-
|
|
182
|
-
function isDir(p) {
|
|
183
|
-
try { return statSync(p).isDirectory(); } catch { return false; }
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// ---------------------------------------------------------------------------
|
|
187
|
-
// buildSkillCatalog
|
|
188
|
-
// ---------------------------------------------------------------------------
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Discover all plugin bundles under extensionsDir, read each bundle's
|
|
192
|
-
* skills/<name>/SKILL.md, and build a catalog of { skill, plugin, keywords, invoke }.
|
|
193
|
-
*
|
|
194
|
-
* - Skips bundles without a .agents/plugin.json.
|
|
195
|
-
* - Skips skill dirs without a SKILL.md.
|
|
196
|
-
* - Skips malformed manifests / SKILL.md files without throwing.
|
|
197
|
-
* - Invocation form: "$<skill>" (the canonical invocation for all surfaces).
|
|
198
|
-
*
|
|
199
|
-
* @param {string} extensionsDir Absolute path to the extensions/ directory.
|
|
200
|
-
* @returns {CatalogEntry[]}
|
|
201
|
-
*/
|
|
202
|
-
export function buildSkillCatalog(extensionsDir) {
|
|
203
|
-
const dir = resolve(extensionsDir);
|
|
204
|
-
if (!existsSync(dir)) return [];
|
|
205
|
-
|
|
206
|
-
let bundleNames;
|
|
207
|
-
try {
|
|
208
|
-
bundleNames = readdirSync(dir);
|
|
209
|
-
} catch {
|
|
210
|
-
return [];
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const catalog = [];
|
|
214
|
-
|
|
215
|
-
for (const bundleName of bundleNames) {
|
|
216
|
-
const bundleDir = join(dir, bundleName);
|
|
217
|
-
if (!isDir(bundleDir)) continue;
|
|
218
|
-
|
|
219
|
-
const manifestPath = join(bundleDir, ".agents", "plugin.json");
|
|
220
|
-
if (!existsSync(manifestPath)) continue;
|
|
221
|
-
|
|
222
|
-
let manifest;
|
|
223
|
-
try {
|
|
224
|
-
manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
225
|
-
} catch {
|
|
226
|
-
// malformed manifest — skip silently
|
|
227
|
-
continue;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
const pluginName = (typeof manifest.name === "string" ? manifest.name : null) ?? bundleName;
|
|
231
|
-
|
|
232
|
-
const skillsDir = join(bundleDir, "skills");
|
|
233
|
-
if (!isDir(skillsDir)) continue;
|
|
234
|
-
|
|
235
|
-
let skillNames;
|
|
236
|
-
try {
|
|
237
|
-
skillNames = readdirSync(skillsDir);
|
|
238
|
-
} catch {
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
for (const skillName of skillNames) {
|
|
243
|
-
const skillDir = join(skillsDir, skillName);
|
|
244
|
-
if (!isDir(skillDir)) continue;
|
|
245
|
-
|
|
246
|
-
const skillMdPath = join(skillDir, "SKILL.md");
|
|
247
|
-
if (!existsSync(skillMdPath)) continue;
|
|
248
|
-
|
|
249
|
-
let skillText;
|
|
250
|
-
try {
|
|
251
|
-
skillText = readFileSync(skillMdPath, "utf8");
|
|
252
|
-
} catch {
|
|
253
|
-
continue;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
const fmBlock = extractFrontmatterBlock(skillText);
|
|
257
|
-
|
|
258
|
-
// `name` from frontmatter (fall back to directory name).
|
|
259
|
-
const fmName = fmBlock ? parseFrontmatterField(fmBlock, "name") : null;
|
|
260
|
-
const resolvedName = fmName ?? skillName;
|
|
261
|
-
|
|
262
|
-
// `description` from frontmatter — both "description" and "desc" keys.
|
|
263
|
-
let description = null;
|
|
264
|
-
if (fmBlock) {
|
|
265
|
-
description = parseFrontmatterField(fmBlock, "description") ?? parseFrontmatterField(fmBlock, "desc");
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
const keywords = deriveKeywords(resolvedName, description ?? "");
|
|
269
|
-
const invoke = `$${resolvedName}`;
|
|
270
|
-
|
|
271
|
-
catalog.push({ skill: resolvedName, plugin: pluginName, keywords, invoke });
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
return catalog;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// ---------------------------------------------------------------------------
|
|
279
|
-
// routePrompt
|
|
280
|
-
// ---------------------------------------------------------------------------
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Route a user prompt against the skill catalog.
|
|
284
|
-
*
|
|
285
|
-
* Matching strategy:
|
|
286
|
-
* 1. Explicit mention — `/skill-name` or `$skill-name` in the prompt (strong).
|
|
287
|
-
* 2. Keyword match — any non-stop-word keyword appears as a word-boundary token.
|
|
288
|
-
*
|
|
289
|
-
* Returns all matched skills (de-duplicated by skill name).
|
|
290
|
-
* No match → additionalContext: null (passthrough).
|
|
291
|
-
*
|
|
292
|
-
* @param {string|null|undefined} prompt
|
|
293
|
-
* @param {CatalogEntry[]} catalog
|
|
294
|
-
* @returns {RouteResult}
|
|
295
|
-
*/
|
|
296
|
-
export function routePrompt(prompt, catalog) {
|
|
297
|
-
if (!prompt || typeof prompt !== "string") {
|
|
298
|
-
return { matches: [], additionalContext: null };
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
const promptLower = prompt.toLowerCase();
|
|
302
|
-
|
|
303
|
-
// Normalise catalog: skip bogus entries.
|
|
304
|
-
const validCatalog = (Array.isArray(catalog) ? catalog : []).filter(
|
|
305
|
-
(e) => e && typeof e.skill === "string" && Array.isArray(e.keywords),
|
|
306
|
-
);
|
|
307
|
-
|
|
308
|
-
const matchMap = new Map(); // skill → RouteMatch
|
|
309
|
-
|
|
310
|
-
for (const entry of validCatalog) {
|
|
311
|
-
if (matchMap.has(entry.skill)) continue; // already matched
|
|
312
|
-
|
|
313
|
-
const { skill, plugin, keywords, invoke } = entry;
|
|
314
|
-
|
|
315
|
-
// 1. Explicit /skill or $skill mention.
|
|
316
|
-
const explicitPatterns = [`/${skill.toLowerCase()}`, `$${skill.toLowerCase()}`];
|
|
317
|
-
for (const pat of explicitPatterns) {
|
|
318
|
-
if (promptLower.includes(pat)) {
|
|
319
|
-
matchMap.set(skill, {
|
|
320
|
-
skill,
|
|
321
|
-
plugin,
|
|
322
|
-
invoke: invoke ?? `$${skill}`,
|
|
323
|
-
reason: `explicit mention of "${pat}"`,
|
|
324
|
-
});
|
|
325
|
-
break;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
if (matchMap.has(skill)) continue;
|
|
329
|
-
|
|
330
|
-
// 2. Keyword word-boundary match.
|
|
331
|
-
for (const kw of keywords) {
|
|
332
|
-
if (!kw || isStopWord(kw)) continue;
|
|
333
|
-
// Word-boundary check: kw must appear as a whole token (not substring of another word).
|
|
334
|
-
// Use a simple regex with \b-equivalent: check that surrounding chars are non-word.
|
|
335
|
-
const kwLower = kw.toLowerCase();
|
|
336
|
-
// Build a word-boundary regex. Escape regex metacharacters in kw.
|
|
337
|
-
const escaped = kwLower.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
338
|
-
const re = new RegExp(`(?<![a-z0-9_-])${escaped}(?![a-z0-9_-])`, "i");
|
|
339
|
-
if (re.test(promptLower)) {
|
|
340
|
-
matchMap.set(skill, {
|
|
341
|
-
skill,
|
|
342
|
-
plugin,
|
|
343
|
-
invoke: invoke ?? `$${skill}`,
|
|
344
|
-
reason: `keyword match on "${kw}"`,
|
|
345
|
-
});
|
|
346
|
-
break;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
const matches = [...matchMap.values()];
|
|
352
|
-
|
|
353
|
-
if (matches.length === 0) {
|
|
354
|
-
return { matches: [], additionalContext: null };
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
const additionalContext = buildAdditionalContext(matches);
|
|
358
|
-
return { matches, additionalContext };
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
// ---------------------------------------------------------------------------
|
|
362
|
-
// additionalContext builder
|
|
363
|
-
// ---------------------------------------------------------------------------
|
|
364
|
-
|
|
365
|
-
/**
|
|
366
|
-
* Build a human-readable additionalContext string that points the agent at
|
|
367
|
-
* the matching skills and how to invoke them.
|
|
368
|
-
*
|
|
369
|
-
* @param {RouteMatch[]} matches
|
|
370
|
-
* @returns {string}
|
|
371
|
-
*/
|
|
372
|
-
function buildAdditionalContext(matches) {
|
|
373
|
-
const lines = [
|
|
374
|
-
"<!-- enact-extensions: UserPromptSubmit keyword-router -->",
|
|
375
|
-
`The following skill${matches.length === 1 ? "" : "s"} appear${matches.length === 1 ? "s" : ""} relevant to the user's prompt:`,
|
|
376
|
-
"",
|
|
377
|
-
];
|
|
378
|
-
|
|
379
|
-
for (const m of matches) {
|
|
380
|
-
lines.push(`- **${m.skill}** (plugin: ${m.plugin})`);
|
|
381
|
-
lines.push(` Invoke with: \`${m.invoke}\``);
|
|
382
|
-
lines.push(` Matched because: ${m.reason}`);
|
|
383
|
-
lines.push("");
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
lines.push(
|
|
387
|
-
"If the user's intent aligns with one of these skills, invoke it using the form shown above.",
|
|
388
|
-
"If unsure, proceed with the default behaviour and ignore this hint.",
|
|
389
|
-
);
|
|
390
|
-
|
|
391
|
-
return lines.join("\n");
|
|
392
|
-
}
|
package/scripts/postinstall.mjs
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* postinstall.mjs — TTY-aware npm postinstall script for enact-extensions.
|
|
4
|
-
*
|
|
5
|
-
* CI-SAFETY CONTRACT (most important property):
|
|
6
|
-
* - If NOT a TTY → print one-line notice and exit 0. NEVER hang.
|
|
7
|
-
* - If CI env var is set → print one-line notice and exit 0.
|
|
8
|
-
* - If ENACT_EXTENSIONS_NO_POSTINSTALL is set → print one-line notice and exit 0.
|
|
9
|
-
* - If interactive TTY (and not CI) → install `enact-core` across host surfaces.
|
|
10
|
-
* - Entire script is wrapped in try/catch → ALWAYS process.exit(0).
|
|
11
|
-
* A postinstall that throws would break `npm ci` in CI.
|
|
12
|
-
*
|
|
13
|
-
* The CI/TTY guards ensure this script is fully safe in:
|
|
14
|
-
* - Docker CI environments (CI=1, no TTY)
|
|
15
|
-
* - npm ci / npm install in CI pipelines
|
|
16
|
-
* - Automated install tooling (pipes, scripts)
|
|
17
|
-
* - Developer machines with interactive TTY (triggers enact-core install)
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
try {
|
|
21
|
-
const { stdin, env } = process;
|
|
22
|
-
|
|
23
|
-
const isCI = !!(env.CI || env.CONTINUOUS_INTEGRATION || env.BUILD_ID || env.GITHUB_ACTIONS);
|
|
24
|
-
const isNoPostinstall = !!(env.ENACT_EXTENSIONS_NO_POSTINSTALL);
|
|
25
|
-
const isTTY = !!(stdin.isTTY);
|
|
26
|
-
|
|
27
|
-
const NOTICE = `Run \`enact-extensions install enact-core --platform all\` to enable session-start drift checks.\n`;
|
|
28
|
-
|
|
29
|
-
if (!isTTY || isCI || isNoPostinstall) {
|
|
30
|
-
// Non-interactive or CI: print notice and exit immediately.
|
|
31
|
-
process.stdout.write(NOTICE);
|
|
32
|
-
process.exit(0);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Interactive TTY (non-CI): install enact-core, which now owns SessionStart.
|
|
36
|
-
// We spawn a child process rather than importing directly to keep postinstall
|
|
37
|
-
// isolated from any import-time side-effects in the CLI modules.
|
|
38
|
-
const { spawnSync } = await import("node:child_process");
|
|
39
|
-
const { dirname, join, resolve } = await import("node:path");
|
|
40
|
-
const { fileURLToPath } = await import("node:url");
|
|
41
|
-
|
|
42
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
43
|
-
const CLI = join(resolve(__dirname, ".."), "scripts", "enact-extensions.mjs");
|
|
44
|
-
|
|
45
|
-
// Spawn with stdio inherited so the interactive readline prompt is visible.
|
|
46
|
-
// We spawn and ignore the exit code — postinstall must always exit 0.
|
|
47
|
-
spawnSync(process.execPath, [CLI, "install", "enact-core", "--platform", "all"], {
|
|
48
|
-
stdio: "inherit",
|
|
49
|
-
env: { ...process.env },
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// Offer a drift refresh if any installed plugins are outdated.
|
|
53
|
-
const { offerDriftRefresh } = await import("./lib/postinstall-offer.mjs");
|
|
54
|
-
const { computeOutdated } = await import("./lib/outdated.mjs");
|
|
55
|
-
const { runUpdate } = await import("./lib/run-update.mjs");
|
|
56
|
-
const { createInterface } = await import("node:readline");
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* promptYesNo — asks a yes/no question on stdin/stdout.
|
|
60
|
-
* Default is YES: empty input / "y" / "yes" (case-insensitive) → true.
|
|
61
|
-
* EOF (Ctrl-D) resolves as false (decline) via the 'close' event so the
|
|
62
|
-
* script can never hang waiting for a promise that will never settle.
|
|
63
|
-
* @param {string} question
|
|
64
|
-
* @returns {Promise<boolean>}
|
|
65
|
-
*/
|
|
66
|
-
function promptYesNo(question) {
|
|
67
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
68
|
-
return new Promise((resolve) => {
|
|
69
|
-
// EOF / Ctrl-D fires 'close' before the question callback — treat as decline.
|
|
70
|
-
rl.once("close", () => resolve(false));
|
|
71
|
-
rl.question(question, (answer) => {
|
|
72
|
-
rl.close();
|
|
73
|
-
const t = (answer ?? "").trim().toLowerCase();
|
|
74
|
-
resolve(t === "" || t === "y" || t === "yes");
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
await offerDriftRefresh({
|
|
80
|
-
isTTY: true,
|
|
81
|
-
// User opt-in: ENACT_EXTENSIONS_AUTO_UPDATE=1 applies drift refreshes without prompting.
|
|
82
|
-
autoYes: !!env.ENACT_EXTENSIONS_AUTO_UPDATE,
|
|
83
|
-
computeOutdatedFn: () => computeOutdated(),
|
|
84
|
-
runUpdateFn: (opts) => runUpdate(opts),
|
|
85
|
-
write: (s) => process.stdout.write(s),
|
|
86
|
-
promptYesNo,
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
process.exit(0);
|
|
90
|
-
} catch {
|
|
91
|
-
// CRITICAL: never let an error propagate from postinstall.
|
|
92
|
-
// Printing to stderr is best-effort (safe to fail).
|
|
93
|
-
try {
|
|
94
|
-
process.stderr.write(
|
|
95
|
-
"[enact-extensions postinstall] Non-fatal error during enact-core install. Run `enact-extensions install enact-core --platform all` manually.\n",
|
|
96
|
-
);
|
|
97
|
-
} catch {
|
|
98
|
-
// Even stderr.write failed — just exit 0.
|
|
99
|
-
}
|
|
100
|
-
process.exit(0);
|
|
101
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Install enact-context through the enact-extensions plugin system.
|
|
3
|
-
#
|
|
4
|
-
# This intentionally does NOT run `enact-context setup` or `doctor --fix`.
|
|
5
|
-
# Those commands write direct host artifacts such as ~/.codex/AGENTS.md,
|
|
6
|
-
# ~/.codex/hooks.json, and ~/.codex/skills/enact-context, bypassing plugin
|
|
7
|
-
# enable/disable and uninstall semantics.
|
|
8
|
-
set -euo pipefail
|
|
9
|
-
|
|
10
|
-
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
11
|
-
|
|
12
|
-
cd "$ROOT"
|
|
13
|
-
npm run build
|
|
14
|
-
node scripts/enact-extensions.mjs validate extensions/enact-context
|
|
15
|
-
|
|
16
|
-
echo ""
|
|
17
|
-
echo "Installing enact-context via enact-extensions plugin registration..."
|
|
18
|
-
if [[ " $* " == *" --platform "* ]]; then
|
|
19
|
-
node scripts/enact-extensions.mjs install enact-context "$@"
|
|
20
|
-
else
|
|
21
|
-
node scripts/enact-extensions.mjs install enact-context --platform "${ENACT_CONTEXT_PLATFORM:-codex}" "$@"
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
|
-
if ! command -v enact-context >/dev/null 2>&1; then
|
|
25
|
-
echo ""
|
|
26
|
-
echo "Note: enact-context runtime binary is not on PATH."
|
|
27
|
-
echo "Install the runtime separately; do not use 'enact-context setup' for Codex registration."
|
|
28
|
-
fi
|