@agents-inc/cli 0.32.1
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/CHANGELOG.md +462 -0
- package/LICENSE +21 -0
- package/README.md +179 -0
- package/config/skills-matrix.yaml +926 -0
- package/config/stacks.yaml +2186 -0
- package/dist/chunk-3ZOIOVKT.js +365 -0
- package/dist/chunk-3ZOIOVKT.js.map +1 -0
- package/dist/chunk-4RAY5AOI.js +78 -0
- package/dist/chunk-4RAY5AOI.js.map +1 -0
- package/dist/chunk-5PIKNCZX.js +234 -0
- package/dist/chunk-5PIKNCZX.js.map +1 -0
- package/dist/chunk-66UDJBF6.js +96 -0
- package/dist/chunk-66UDJBF6.js.map +1 -0
- package/dist/chunk-7SOPVGDV.js +24 -0
- package/dist/chunk-7SOPVGDV.js.map +1 -0
- package/dist/chunk-A27LOC4Z.js +95 -0
- package/dist/chunk-A27LOC4Z.js.map +1 -0
- package/dist/chunk-B2UBHA66.js +301 -0
- package/dist/chunk-B2UBHA66.js.map +1 -0
- package/dist/chunk-BZN2Z5P7.js +882 -0
- package/dist/chunk-BZN2Z5P7.js.map +1 -0
- package/dist/chunk-BZQBJP34.js +186 -0
- package/dist/chunk-BZQBJP34.js.map +1 -0
- package/dist/chunk-DC5AK3LW.js +105 -0
- package/dist/chunk-DC5AK3LW.js.map +1 -0
- package/dist/chunk-DHET7RCE.js +50 -0
- package/dist/chunk-DHET7RCE.js.map +1 -0
- package/dist/chunk-EMJ2ZKS7.js +346 -0
- package/dist/chunk-EMJ2ZKS7.js.map +1 -0
- package/dist/chunk-FJQRVFMB.js +48 -0
- package/dist/chunk-FJQRVFMB.js.map +1 -0
- package/dist/chunk-FZGYSLJL.js +85 -0
- package/dist/chunk-FZGYSLJL.js.map +1 -0
- package/dist/chunk-H566H3MQ.js +87 -0
- package/dist/chunk-H566H3MQ.js.map +1 -0
- package/dist/chunk-IYG2LAIM.js +90 -0
- package/dist/chunk-IYG2LAIM.js.map +1 -0
- package/dist/chunk-IZZ4IIEG.js +29 -0
- package/dist/chunk-IZZ4IIEG.js.map +1 -0
- package/dist/chunk-JMVWYAHT.js +63 -0
- package/dist/chunk-JMVWYAHT.js.map +1 -0
- package/dist/chunk-LAPCUV4D.js +191 -0
- package/dist/chunk-LAPCUV4D.js.map +1 -0
- package/dist/chunk-LGUI3PMO.js +109 -0
- package/dist/chunk-LGUI3PMO.js.map +1 -0
- package/dist/chunk-MM7NK5N2.js +4542 -0
- package/dist/chunk-MM7NK5N2.js.map +1 -0
- package/dist/chunk-N6S7ZRIL.js +31 -0
- package/dist/chunk-N6S7ZRIL.js.map +1 -0
- package/dist/chunk-O4D67NN7.js +24 -0
- package/dist/chunk-O4D67NN7.js.map +1 -0
- package/dist/chunk-ODUOU55D.js +56 -0
- package/dist/chunk-ODUOU55D.js.map +1 -0
- package/dist/chunk-OGJIZ6QH.js +497 -0
- package/dist/chunk-OGJIZ6QH.js.map +1 -0
- package/dist/chunk-OMV7TLWD.js +340 -0
- package/dist/chunk-OMV7TLWD.js.map +1 -0
- package/dist/chunk-PBEHPQLK.js +146 -0
- package/dist/chunk-PBEHPQLK.js.map +1 -0
- package/dist/chunk-QPTOIZAT.js +32 -0
- package/dist/chunk-QPTOIZAT.js.map +1 -0
- package/dist/chunk-R3XFQKPG.js +111 -0
- package/dist/chunk-R3XFQKPG.js.map +1 -0
- package/dist/chunk-R74PZWQS.js +69 -0
- package/dist/chunk-R74PZWQS.js.map +1 -0
- package/dist/chunk-SO22IQPY.js +45 -0
- package/dist/chunk-SO22IQPY.js.map +1 -0
- package/dist/chunk-T4EXUIBY.js +19 -0
- package/dist/chunk-T4EXUIBY.js.map +1 -0
- package/dist/chunk-U3IGFMCY.js +31 -0
- package/dist/chunk-U3IGFMCY.js.map +1 -0
- package/dist/chunk-UICL22RT.js +318 -0
- package/dist/chunk-UICL22RT.js.map +1 -0
- package/dist/chunk-UX2H2K2G.js +183 -0
- package/dist/chunk-UX2H2K2G.js.map +1 -0
- package/dist/chunk-W2ZSCZ2U.js +93 -0
- package/dist/chunk-W2ZSCZ2U.js.map +1 -0
- package/dist/chunk-WEUVWHMA.js +189 -0
- package/dist/chunk-WEUVWHMA.js.map +1 -0
- package/dist/chunk-XY3XDVMI.js +15599 -0
- package/dist/chunk-XY3XDVMI.js.map +1 -0
- package/dist/chunk-YND42IXK.js +233 -0
- package/dist/chunk-YND42IXK.js.map +1 -0
- package/dist/chunk-YZTWZVGX.js +41 -0
- package/dist/chunk-YZTWZVGX.js.map +1 -0
- package/dist/chunk-Z4TWOP3H.js +81 -0
- package/dist/chunk-Z4TWOP3H.js.map +1 -0
- package/dist/cli/defaults/agent-mappings.yaml +271 -0
- package/dist/commands/build/marketplace.js +252 -0
- package/dist/commands/build/marketplace.js.map +1 -0
- package/dist/commands/build/plugins.js +114 -0
- package/dist/commands/build/plugins.js.map +1 -0
- package/dist/commands/build/stack.js +153 -0
- package/dist/commands/build/stack.js.map +1 -0
- package/dist/commands/compile.js +354 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config/get.js +61 -0
- package/dist/commands/config/get.js.map +1 -0
- package/dist/commands/config/index.js +23 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/config/path.js +34 -0
- package/dist/commands/config/path.js.map +1 -0
- package/dist/commands/config/set-project.js +61 -0
- package/dist/commands/config/set-project.js.map +1 -0
- package/dist/commands/config/show.js +14 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/config/unset-project.js +57 -0
- package/dist/commands/config/unset-project.js.map +1 -0
- package/dist/commands/diff.js +742 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.js +370 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/edit.js +301 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/eject.js +262 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/import/skill.js +361 -0
- package/dist/commands/import/skill.js.map +1 -0
- package/dist/commands/info.js +217 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.js +443 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.js +49 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/new/agent.js +224 -0
- package/dist/commands/new/agent.js.map +1 -0
- package/dist/commands/new/skill.js +199 -0
- package/dist/commands/new/skill.js.map +1 -0
- package/dist/commands/outdated.js +176 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/search.js +288 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/uninstall.js +302 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.js +304 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.js +389 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/version/bump.js +79 -0
- package/dist/commands/version/bump.js.map +1 -0
- package/dist/commands/version/index.js +54 -0
- package/dist/commands/version/index.js.map +1 -0
- package/dist/commands/version/set.js +86 -0
- package/dist/commands/version/set.js.map +1 -0
- package/dist/commands/version/show.js +54 -0
- package/dist/commands/version/show.js.map +1 -0
- package/dist/components/common/confirm.js +9 -0
- package/dist/components/common/confirm.js.map +1 -0
- package/dist/components/common/confirm.test.js +203 -0
- package/dist/components/common/confirm.test.js.map +1 -0
- package/dist/components/common/message.js +20 -0
- package/dist/components/common/message.js.map +1 -0
- package/dist/components/common/spinner.js +14 -0
- package/dist/components/common/spinner.js.map +1 -0
- package/dist/components/skill-search/skill-search.js +12 -0
- package/dist/components/skill-search/skill-search.js.map +1 -0
- package/dist/components/wizard/category-grid.js +11 -0
- package/dist/components/wizard/category-grid.js.map +1 -0
- package/dist/components/wizard/category-grid.test.js +997 -0
- package/dist/components/wizard/category-grid.test.js.map +1 -0
- package/dist/components/wizard/domain-selection.js +14 -0
- package/dist/components/wizard/domain-selection.js.map +1 -0
- package/dist/components/wizard/help-modal.js +10 -0
- package/dist/components/wizard/help-modal.js.map +1 -0
- package/dist/components/wizard/menu-item.js +10 -0
- package/dist/components/wizard/menu-item.js.map +1 -0
- package/dist/components/wizard/search-modal.js +11 -0
- package/dist/components/wizard/search-modal.js.map +1 -0
- package/dist/components/wizard/search-modal.test.js +218 -0
- package/dist/components/wizard/search-modal.test.js.map +1 -0
- package/dist/components/wizard/section-progress.js +10 -0
- package/dist/components/wizard/section-progress.js.map +1 -0
- package/dist/components/wizard/section-progress.test.js +192 -0
- package/dist/components/wizard/section-progress.test.js.map +1 -0
- package/dist/components/wizard/source-grid.js +14 -0
- package/dist/components/wizard/source-grid.js.map +1 -0
- package/dist/components/wizard/source-grid.test.js +504 -0
- package/dist/components/wizard/source-grid.test.js.map +1 -0
- package/dist/components/wizard/stack-selection.js +17 -0
- package/dist/components/wizard/stack-selection.js.map +1 -0
- package/dist/components/wizard/step-build.js +17 -0
- package/dist/components/wizard/step-build.js.map +1 -0
- package/dist/components/wizard/step-build.test.js +600 -0
- package/dist/components/wizard/step-build.test.js.map +1 -0
- package/dist/components/wizard/step-confirm.js +12 -0
- package/dist/components/wizard/step-confirm.js.map +1 -0
- package/dist/components/wizard/step-confirm.test.js +366 -0
- package/dist/components/wizard/step-confirm.test.js.map +1 -0
- package/dist/components/wizard/step-refine.js +10 -0
- package/dist/components/wizard/step-refine.js.map +1 -0
- package/dist/components/wizard/step-refine.test.js +237 -0
- package/dist/components/wizard/step-refine.test.js.map +1 -0
- package/dist/components/wizard/step-settings.js +17 -0
- package/dist/components/wizard/step-settings.js.map +1 -0
- package/dist/components/wizard/step-settings.test.js +243 -0
- package/dist/components/wizard/step-settings.test.js.map +1 -0
- package/dist/components/wizard/step-sources.js +20 -0
- package/dist/components/wizard/step-sources.js.map +1 -0
- package/dist/components/wizard/step-sources.test.js +294 -0
- package/dist/components/wizard/step-sources.test.js.map +1 -0
- package/dist/components/wizard/step-stack.js +19 -0
- package/dist/components/wizard/step-stack.js.map +1 -0
- package/dist/components/wizard/step-stack.test.js +357 -0
- package/dist/components/wizard/step-stack.test.js.map +1 -0
- package/dist/components/wizard/view-title.js +10 -0
- package/dist/components/wizard/view-title.js.map +1 -0
- package/dist/components/wizard/wizard-layout.js +16 -0
- package/dist/components/wizard/wizard-layout.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.js +14 -0
- package/dist/components/wizard/wizard-tabs.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.test.js +294 -0
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
- package/dist/components/wizard/wizard.js +35 -0
- package/dist/components/wizard/wizard.js.map +1 -0
- package/dist/config/skills-matrix.yaml +926 -0
- package/dist/config/stacks.yaml +2186 -0
- package/dist/hooks/init.js +40 -0
- package/dist/hooks/init.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/magic-string.es-RGXYGAW3.js +1316 -0
- package/dist/magic-string.es-RGXYGAW3.js.map +1 -0
- package/dist/source-manager-SBPPLOQQ.js +16 -0
- package/dist/source-manager-SBPPLOQQ.js.map +1 -0
- package/dist/src/agents/_templates/agent.liquid +140 -0
- package/dist/src/agents/developer/api-developer/agent.yaml +12 -0
- package/dist/src/agents/developer/api-developer/critical-reminders.md +23 -0
- package/dist/src/agents/developer/api-developer/critical-requirements.md +11 -0
- package/dist/src/agents/developer/api-developer/examples.md +72 -0
- package/dist/src/agents/developer/api-developer/intro.md +22 -0
- package/dist/src/agents/developer/api-developer/output-format.md +359 -0
- package/dist/src/agents/developer/api-developer/workflow.md +471 -0
- package/dist/src/agents/developer/cli-developer/agent.yaml +12 -0
- package/dist/src/agents/developer/cli-developer/critical-reminders.md +28 -0
- package/dist/src/agents/developer/cli-developer/critical-requirements.md +15 -0
- package/dist/src/agents/developer/cli-developer/examples.md +68 -0
- package/dist/src/agents/developer/cli-developer/intro.md +23 -0
- package/dist/src/agents/developer/cli-developer/output-format.md +216 -0
- package/dist/src/agents/developer/cli-developer/workflow.md +509 -0
- package/dist/src/agents/developer/web-architecture/agent.yaml +12 -0
- package/dist/src/agents/developer/web-architecture/critical-reminders.md +27 -0
- package/dist/src/agents/developer/web-architecture/critical-requirements.md +35 -0
- package/dist/src/agents/developer/web-architecture/examples.md +187 -0
- package/dist/src/agents/developer/web-architecture/intro.md +35 -0
- package/dist/src/agents/developer/web-architecture/output-format.md +261 -0
- package/dist/src/agents/developer/web-architecture/workflow.md +599 -0
- package/dist/src/agents/developer/web-developer/agent.yaml +12 -0
- package/dist/src/agents/developer/web-developer/critical-reminders.md +17 -0
- package/dist/src/agents/developer/web-developer/critical-requirements.md +15 -0
- package/dist/src/agents/developer/web-developer/examples.md +109 -0
- package/dist/src/agents/developer/web-developer/intro.md +5 -0
- package/dist/src/agents/developer/web-developer/output-format.md +213 -0
- package/dist/src/agents/developer/web-developer/workflow.md +459 -0
- package/dist/src/agents/meta/agent-summoner/agent.yaml +12 -0
- package/dist/src/agents/meta/agent-summoner/critical-reminders.md +31 -0
- package/dist/src/agents/meta/agent-summoner/critical-requirements.md +27 -0
- package/dist/src/agents/meta/agent-summoner/examples.md +176 -0
- package/dist/src/agents/meta/agent-summoner/intro.md +9 -0
- package/dist/src/agents/meta/agent-summoner/output-format.md +115 -0
- package/dist/src/agents/meta/agent-summoner/workflow.md +1540 -0
- package/dist/src/agents/meta/documentor/agent.yaml +11 -0
- package/dist/src/agents/meta/documentor/critical-reminders.md +23 -0
- package/dist/src/agents/meta/documentor/critical-requirements.md +13 -0
- package/dist/src/agents/meta/documentor/examples.md +147 -0
- package/dist/src/agents/meta/documentor/intro.md +11 -0
- package/dist/src/agents/meta/documentor/output-format.md +237 -0
- package/dist/src/agents/meta/documentor/workflow.md +1271 -0
- package/dist/src/agents/meta/skill-summoner/agent.yaml +13 -0
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +73 -0
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
- package/dist/src/agents/meta/skill-summoner/examples.md +116 -0
- package/dist/src/agents/meta/skill-summoner/intro.md +5 -0
- package/dist/src/agents/meta/skill-summoner/output-format.md +279 -0
- package/dist/src/agents/meta/skill-summoner/workflow.md +1485 -0
- package/dist/src/agents/migration/cli-migrator/agent.yaml +12 -0
- package/dist/src/agents/migration/cli-migrator/anti-patterns.md +158 -0
- package/dist/src/agents/migration/cli-migrator/conversion-mappings.md +63 -0
- package/dist/src/agents/migration/cli-migrator/critical-reminders.md +17 -0
- package/dist/src/agents/migration/cli-migrator/critical-requirements.md +13 -0
- package/dist/src/agents/migration/cli-migrator/intro.md +15 -0
- package/dist/src/agents/migration/cli-migrator/output-format.md +164 -0
- package/dist/src/agents/migration/cli-migrator/workflow.md +230 -0
- package/dist/src/agents/pattern/pattern-scout/agent.yaml +10 -0
- package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +58 -0
- package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +17 -0
- package/dist/src/agents/pattern/pattern-scout/examples.md +93 -0
- package/dist/src/agents/pattern/pattern-scout/intro.md +3 -0
- package/dist/src/agents/pattern/pattern-scout/output-format.md +196 -0
- package/dist/src/agents/pattern/pattern-scout/workflow.md +1901 -0
- package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +12 -0
- package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +13 -0
- package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +11 -0
- package/dist/src/agents/pattern/web-pattern-critique/examples.md +56 -0
- package/dist/src/agents/pattern/web-pattern-critique/intro.md +5 -0
- package/dist/src/agents/pattern/web-pattern-critique/output-format.md +257 -0
- package/dist/src/agents/pattern/web-pattern-critique/workflow.md +674 -0
- package/dist/src/agents/planning/web-pm/agent.yaml +12 -0
- package/dist/src/agents/planning/web-pm/critical-reminders.md +21 -0
- package/dist/src/agents/planning/web-pm/critical-requirements.md +17 -0
- package/dist/src/agents/planning/web-pm/examples.md +85 -0
- package/dist/src/agents/planning/web-pm/intro.md +3 -0
- package/dist/src/agents/planning/web-pm/output-format.md +228 -0
- package/dist/src/agents/planning/web-pm/workflow.md +393 -0
- package/dist/src/agents/researcher/api-researcher/agent.yaml +10 -0
- package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
- package/dist/src/agents/researcher/api-researcher/critical-requirements.md +13 -0
- package/dist/src/agents/researcher/api-researcher/examples.md +116 -0
- package/dist/src/agents/researcher/api-researcher/intro.md +32 -0
- package/dist/src/agents/researcher/api-researcher/output-format.md +135 -0
- package/dist/src/agents/researcher/api-researcher/workflow.md +261 -0
- package/dist/src/agents/researcher/web-researcher/agent.yaml +10 -0
- package/dist/src/agents/researcher/web-researcher/critical-reminders.md +23 -0
- package/dist/src/agents/researcher/web-researcher/critical-requirements.md +11 -0
- package/dist/src/agents/researcher/web-researcher/examples.md +126 -0
- package/dist/src/agents/researcher/web-researcher/intro.md +31 -0
- package/dist/src/agents/researcher/web-researcher/output-format.md +112 -0
- package/dist/src/agents/researcher/web-researcher/workflow.md +322 -0
- package/dist/src/agents/reviewer/api-reviewer/agent.yaml +12 -0
- package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +16 -0
- package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +13 -0
- package/dist/src/agents/reviewer/api-reviewer/examples.md +54 -0
- package/dist/src/agents/reviewer/api-reviewer/intro.md +22 -0
- package/dist/src/agents/reviewer/api-reviewer/output-format.md +288 -0
- package/dist/src/agents/reviewer/api-reviewer/workflow.md +369 -0
- package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +12 -0
- package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +17 -0
- package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +13 -0
- package/dist/src/agents/reviewer/cli-reviewer/examples.md +83 -0
- package/dist/src/agents/reviewer/cli-reviewer/intro.md +21 -0
- package/dist/src/agents/reviewer/cli-reviewer/output-format.md +330 -0
- package/dist/src/agents/reviewer/cli-reviewer/workflow.md +294 -0
- package/dist/src/agents/reviewer/web-reviewer/agent.yaml +12 -0
- package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +17 -0
- package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +11 -0
- package/dist/src/agents/reviewer/web-reviewer/examples.md +79 -0
- package/dist/src/agents/reviewer/web-reviewer/intro.md +20 -0
- package/dist/src/agents/reviewer/web-reviewer/output-format.md +253 -0
- package/dist/src/agents/reviewer/web-reviewer/workflow.md +228 -0
- package/dist/src/agents/tester/cli-tester/agent.yaml +12 -0
- package/dist/src/agents/tester/cli-tester/critical-reminders.md +19 -0
- package/dist/src/agents/tester/cli-tester/critical-requirements.md +17 -0
- package/dist/src/agents/tester/cli-tester/examples.md +80 -0
- package/dist/src/agents/tester/cli-tester/intro.md +19 -0
- package/dist/src/agents/tester/cli-tester/output-format.md +232 -0
- package/dist/src/agents/tester/cli-tester/workflow.md +304 -0
- package/dist/src/agents/tester/web-tester/agent.yaml +12 -0
- package/dist/src/agents/tester/web-tester/critical-reminders.md +15 -0
- package/dist/src/agents/tester/web-tester/critical-requirements.md +11 -0
- package/dist/src/agents/tester/web-tester/examples.md +68 -0
- package/dist/src/agents/tester/web-tester/intro.md +18 -0
- package/dist/src/agents/tester/web-tester/output-format.md +252 -0
- package/dist/src/agents/tester/web-tester/workflow.md +507 -0
- package/dist/stores/wizard-store.js +13 -0
- package/dist/stores/wizard-store.js.map +1 -0
- package/dist/stores/wizard-store.test.js +689 -0
- package/dist/stores/wizard-store.test.js.map +1 -0
- package/package.json +134 -0
- package/src/agents/_templates/agent.liquid +140 -0
- package/src/agents/developer/api-developer/agent.yaml +12 -0
- package/src/agents/developer/api-developer/critical-reminders.md +23 -0
- package/src/agents/developer/api-developer/critical-requirements.md +11 -0
- package/src/agents/developer/api-developer/examples.md +72 -0
- package/src/agents/developer/api-developer/intro.md +22 -0
- package/src/agents/developer/api-developer/output-format.md +359 -0
- package/src/agents/developer/api-developer/workflow.md +471 -0
- package/src/agents/developer/cli-developer/agent.yaml +12 -0
- package/src/agents/developer/cli-developer/critical-reminders.md +28 -0
- package/src/agents/developer/cli-developer/critical-requirements.md +15 -0
- package/src/agents/developer/cli-developer/examples.md +68 -0
- package/src/agents/developer/cli-developer/intro.md +23 -0
- package/src/agents/developer/cli-developer/output-format.md +216 -0
- package/src/agents/developer/cli-developer/workflow.md +509 -0
- package/src/agents/developer/web-architecture/agent.yaml +12 -0
- package/src/agents/developer/web-architecture/critical-reminders.md +27 -0
- package/src/agents/developer/web-architecture/critical-requirements.md +35 -0
- package/src/agents/developer/web-architecture/examples.md +187 -0
- package/src/agents/developer/web-architecture/intro.md +35 -0
- package/src/agents/developer/web-architecture/output-format.md +261 -0
- package/src/agents/developer/web-architecture/workflow.md +599 -0
- package/src/agents/developer/web-developer/agent.yaml +12 -0
- package/src/agents/developer/web-developer/critical-reminders.md +17 -0
- package/src/agents/developer/web-developer/critical-requirements.md +15 -0
- package/src/agents/developer/web-developer/examples.md +109 -0
- package/src/agents/developer/web-developer/intro.md +5 -0
- package/src/agents/developer/web-developer/output-format.md +213 -0
- package/src/agents/developer/web-developer/workflow.md +459 -0
- package/src/agents/meta/agent-summoner/agent.yaml +12 -0
- package/src/agents/meta/agent-summoner/critical-reminders.md +31 -0
- package/src/agents/meta/agent-summoner/critical-requirements.md +27 -0
- package/src/agents/meta/agent-summoner/examples.md +176 -0
- package/src/agents/meta/agent-summoner/intro.md +9 -0
- package/src/agents/meta/agent-summoner/output-format.md +115 -0
- package/src/agents/meta/agent-summoner/workflow.md +1540 -0
- package/src/agents/meta/documentor/agent.yaml +11 -0
- package/src/agents/meta/documentor/critical-reminders.md +23 -0
- package/src/agents/meta/documentor/critical-requirements.md +13 -0
- package/src/agents/meta/documentor/examples.md +147 -0
- package/src/agents/meta/documentor/intro.md +11 -0
- package/src/agents/meta/documentor/output-format.md +237 -0
- package/src/agents/meta/documentor/workflow.md +1271 -0
- package/src/agents/meta/skill-summoner/agent.yaml +13 -0
- package/src/agents/meta/skill-summoner/critical-reminders.md +73 -0
- package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
- package/src/agents/meta/skill-summoner/examples.md +116 -0
- package/src/agents/meta/skill-summoner/intro.md +5 -0
- package/src/agents/meta/skill-summoner/output-format.md +279 -0
- package/src/agents/meta/skill-summoner/workflow.md +1485 -0
- package/src/agents/migration/cli-migrator/agent.yaml +12 -0
- package/src/agents/migration/cli-migrator/anti-patterns.md +158 -0
- package/src/agents/migration/cli-migrator/conversion-mappings.md +63 -0
- package/src/agents/migration/cli-migrator/critical-reminders.md +17 -0
- package/src/agents/migration/cli-migrator/critical-requirements.md +13 -0
- package/src/agents/migration/cli-migrator/intro.md +15 -0
- package/src/agents/migration/cli-migrator/output-format.md +164 -0
- package/src/agents/migration/cli-migrator/workflow.md +230 -0
- package/src/agents/pattern/pattern-scout/agent.yaml +10 -0
- package/src/agents/pattern/pattern-scout/critical-reminders.md +58 -0
- package/src/agents/pattern/pattern-scout/critical-requirements.md +17 -0
- package/src/agents/pattern/pattern-scout/examples.md +93 -0
- package/src/agents/pattern/pattern-scout/intro.md +3 -0
- package/src/agents/pattern/pattern-scout/output-format.md +196 -0
- package/src/agents/pattern/pattern-scout/workflow.md +1901 -0
- package/src/agents/pattern/web-pattern-critique/agent.yaml +12 -0
- package/src/agents/pattern/web-pattern-critique/critical-reminders.md +13 -0
- package/src/agents/pattern/web-pattern-critique/critical-requirements.md +11 -0
- package/src/agents/pattern/web-pattern-critique/examples.md +56 -0
- package/src/agents/pattern/web-pattern-critique/intro.md +5 -0
- package/src/agents/pattern/web-pattern-critique/output-format.md +257 -0
- package/src/agents/pattern/web-pattern-critique/workflow.md +674 -0
- package/src/agents/planning/web-pm/agent.yaml +12 -0
- package/src/agents/planning/web-pm/critical-reminders.md +21 -0
- package/src/agents/planning/web-pm/critical-requirements.md +17 -0
- package/src/agents/planning/web-pm/examples.md +85 -0
- package/src/agents/planning/web-pm/intro.md +3 -0
- package/src/agents/planning/web-pm/output-format.md +228 -0
- package/src/agents/planning/web-pm/workflow.md +393 -0
- package/src/agents/researcher/api-researcher/agent.yaml +10 -0
- package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
- package/src/agents/researcher/api-researcher/critical-requirements.md +13 -0
- package/src/agents/researcher/api-researcher/examples.md +116 -0
- package/src/agents/researcher/api-researcher/intro.md +32 -0
- package/src/agents/researcher/api-researcher/output-format.md +135 -0
- package/src/agents/researcher/api-researcher/workflow.md +261 -0
- package/src/agents/researcher/web-researcher/agent.yaml +10 -0
- package/src/agents/researcher/web-researcher/critical-reminders.md +23 -0
- package/src/agents/researcher/web-researcher/critical-requirements.md +11 -0
- package/src/agents/researcher/web-researcher/examples.md +126 -0
- package/src/agents/researcher/web-researcher/intro.md +31 -0
- package/src/agents/researcher/web-researcher/output-format.md +112 -0
- package/src/agents/researcher/web-researcher/workflow.md +322 -0
- package/src/agents/reviewer/api-reviewer/agent.yaml +12 -0
- package/src/agents/reviewer/api-reviewer/critical-reminders.md +16 -0
- package/src/agents/reviewer/api-reviewer/critical-requirements.md +13 -0
- package/src/agents/reviewer/api-reviewer/examples.md +54 -0
- package/src/agents/reviewer/api-reviewer/intro.md +22 -0
- package/src/agents/reviewer/api-reviewer/output-format.md +288 -0
- package/src/agents/reviewer/api-reviewer/workflow.md +369 -0
- package/src/agents/reviewer/cli-reviewer/agent.yaml +12 -0
- package/src/agents/reviewer/cli-reviewer/critical-reminders.md +17 -0
- package/src/agents/reviewer/cli-reviewer/critical-requirements.md +13 -0
- package/src/agents/reviewer/cli-reviewer/examples.md +83 -0
- package/src/agents/reviewer/cli-reviewer/intro.md +21 -0
- package/src/agents/reviewer/cli-reviewer/output-format.md +330 -0
- package/src/agents/reviewer/cli-reviewer/workflow.md +294 -0
- package/src/agents/reviewer/web-reviewer/agent.yaml +12 -0
- package/src/agents/reviewer/web-reviewer/critical-reminders.md +17 -0
- package/src/agents/reviewer/web-reviewer/critical-requirements.md +11 -0
- package/src/agents/reviewer/web-reviewer/examples.md +79 -0
- package/src/agents/reviewer/web-reviewer/intro.md +20 -0
- package/src/agents/reviewer/web-reviewer/output-format.md +253 -0
- package/src/agents/reviewer/web-reviewer/workflow.md +228 -0
- package/src/agents/tester/cli-tester/agent.yaml +12 -0
- package/src/agents/tester/cli-tester/critical-reminders.md +19 -0
- package/src/agents/tester/cli-tester/critical-requirements.md +17 -0
- package/src/agents/tester/cli-tester/examples.md +80 -0
- package/src/agents/tester/cli-tester/intro.md +19 -0
- package/src/agents/tester/cli-tester/output-format.md +232 -0
- package/src/agents/tester/cli-tester/workflow.md +304 -0
- package/src/agents/tester/web-tester/agent.yaml +12 -0
- package/src/agents/tester/web-tester/critical-reminders.md +15 -0
- package/src/agents/tester/web-tester/critical-requirements.md +11 -0
- package/src/agents/tester/web-tester/examples.md +68 -0
- package/src/agents/tester/web-tester/intro.md +18 -0
- package/src/agents/tester/web-tester/output-format.md +252 -0
- package/src/agents/tester/web-tester/workflow.md +507 -0
- package/src/schemas/agent-frontmatter.schema.json +84 -0
- package/src/schemas/agent.schema.json +93 -0
- package/src/schemas/hooks.schema.json +47 -0
- package/src/schemas/marketplace.schema.json +119 -0
- package/src/schemas/metadata.schema.json +113 -0
- package/src/schemas/plugin.schema.json +130 -0
- package/src/schemas/project-config.schema.json +125 -0
- package/src/schemas/project-source-config.schema.json +81 -0
- package/src/schemas/skill-frontmatter.schema.json +42 -0
- package/src/schemas/skills-matrix.schema.json +467 -0
- package/src/schemas/stack.schema.json +191 -0
- package/src/schemas/stacks.schema.json +111 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
ERROR_MESSAGES
|
|
4
|
+
} from "../chunk-R74PZWQS.js";
|
|
5
|
+
import {
|
|
6
|
+
BaseCommand,
|
|
7
|
+
EXIT_CODES
|
|
8
|
+
} from "../chunk-ODUOU55D.js";
|
|
9
|
+
import {
|
|
10
|
+
extractFrontmatter,
|
|
11
|
+
printPluginValidationResult,
|
|
12
|
+
validateAllPlugins,
|
|
13
|
+
validatePlugin
|
|
14
|
+
} from "../chunk-MM7NK5N2.js";
|
|
15
|
+
import "../chunk-T4EXUIBY.js";
|
|
16
|
+
import {
|
|
17
|
+
agentFrontmatterValidationSchema,
|
|
18
|
+
agentYamlGenerationSchema,
|
|
19
|
+
fileExists,
|
|
20
|
+
getErrorMessage,
|
|
21
|
+
log,
|
|
22
|
+
metadataValidationSchema,
|
|
23
|
+
pluginManifestSchema,
|
|
24
|
+
projectSourceConfigSchema,
|
|
25
|
+
readFile,
|
|
26
|
+
skillFrontmatterValidationSchema,
|
|
27
|
+
skillsMatrixConfigSchema,
|
|
28
|
+
stackConfigValidationSchema,
|
|
29
|
+
stacksConfigSchema
|
|
30
|
+
} from "../chunk-BZN2Z5P7.js";
|
|
31
|
+
import {
|
|
32
|
+
CLAUDE_DIR,
|
|
33
|
+
CLAUDE_SRC_DIR,
|
|
34
|
+
STANDARD_FILES
|
|
35
|
+
} from "../chunk-LAPCUV4D.js";
|
|
36
|
+
import {
|
|
37
|
+
init_esm_shims
|
|
38
|
+
} from "../chunk-DHET7RCE.js";
|
|
39
|
+
|
|
40
|
+
// src/cli/commands/validate.ts
|
|
41
|
+
init_esm_shims();
|
|
42
|
+
import { Args, Flags } from "@oclif/core";
|
|
43
|
+
import path2 from "path";
|
|
44
|
+
|
|
45
|
+
// src/cli/lib/schema-validator.ts
|
|
46
|
+
init_esm_shims();
|
|
47
|
+
import { sumBy } from "remeda";
|
|
48
|
+
import path from "path";
|
|
49
|
+
import { parse as parseYaml } from "yaml";
|
|
50
|
+
import fg from "fast-glob";
|
|
51
|
+
var VALIDATION_TARGETS = [
|
|
52
|
+
{
|
|
53
|
+
name: "Skills Matrix",
|
|
54
|
+
schema: skillsMatrixConfigSchema,
|
|
55
|
+
pattern: STANDARD_FILES.SKILLS_MATRIX_YAML,
|
|
56
|
+
baseDir: "src/config"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Skill Metadata",
|
|
60
|
+
schema: metadataValidationSchema,
|
|
61
|
+
pattern: `**/${STANDARD_FILES.METADATA_YAML}`,
|
|
62
|
+
baseDir: "src/skills"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "Stack Skill Metadata",
|
|
66
|
+
schema: metadataValidationSchema,
|
|
67
|
+
pattern: `**/skills/**/${STANDARD_FILES.METADATA_YAML}`,
|
|
68
|
+
baseDir: "src/stacks"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "Stack Config",
|
|
72
|
+
schema: stackConfigValidationSchema,
|
|
73
|
+
pattern: `*/${STANDARD_FILES.CONFIG_YAML}`,
|
|
74
|
+
baseDir: "src/stacks"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "Agent Definition",
|
|
78
|
+
schema: agentYamlGenerationSchema,
|
|
79
|
+
pattern: `**/${STANDARD_FILES.AGENT_YAML}`,
|
|
80
|
+
baseDir: "src/agents"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "Skill Frontmatter",
|
|
84
|
+
schema: skillFrontmatterValidationSchema,
|
|
85
|
+
pattern: `**/${STANDARD_FILES.SKILL_MD}`,
|
|
86
|
+
baseDir: "src/skills",
|
|
87
|
+
extractor: extractFrontmatter
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "Stack Skill Frontmatter",
|
|
91
|
+
schema: skillFrontmatterValidationSchema,
|
|
92
|
+
pattern: `**/skills/**/${STANDARD_FILES.SKILL_MD}`,
|
|
93
|
+
baseDir: "src/stacks",
|
|
94
|
+
extractor: extractFrontmatter
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "Stacks Config",
|
|
98
|
+
schema: stacksConfigSchema,
|
|
99
|
+
pattern: "stacks.yaml",
|
|
100
|
+
baseDir: "config"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "Project Source Config",
|
|
104
|
+
schema: projectSourceConfigSchema,
|
|
105
|
+
pattern: STANDARD_FILES.CONFIG_YAML,
|
|
106
|
+
baseDir: CLAUDE_SRC_DIR
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "Project Skill Metadata",
|
|
110
|
+
schema: metadataValidationSchema,
|
|
111
|
+
pattern: `*/${STANDARD_FILES.METADATA_YAML}`,
|
|
112
|
+
baseDir: `${CLAUDE_DIR}/skills`
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "Project Skill Frontmatter",
|
|
116
|
+
schema: skillFrontmatterValidationSchema,
|
|
117
|
+
pattern: `*/${STANDARD_FILES.SKILL_MD}`,
|
|
118
|
+
baseDir: `${CLAUDE_DIR}/skills`,
|
|
119
|
+
extractor: extractFrontmatter
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: "Project Agent Frontmatter",
|
|
123
|
+
schema: agentFrontmatterValidationSchema,
|
|
124
|
+
pattern: "*.md",
|
|
125
|
+
baseDir: `${CLAUDE_DIR}/agents`,
|
|
126
|
+
extractor: extractFrontmatter
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "Plugin Manifest",
|
|
130
|
+
schema: pluginManifestSchema,
|
|
131
|
+
pattern: `*/${STANDARD_FILES.PLUGIN_JSON}`,
|
|
132
|
+
baseDir: `${CLAUDE_DIR}/plugins`,
|
|
133
|
+
extractor: (content) => JSON.parse(content)
|
|
134
|
+
}
|
|
135
|
+
];
|
|
136
|
+
function formatZodErrors(error) {
|
|
137
|
+
return error.issues.map((issue) => {
|
|
138
|
+
const path3 = issue.path.join(".");
|
|
139
|
+
if (issue.code === "unrecognized_keys") {
|
|
140
|
+
return `Unrecognized key: "${issue.keys.join('", "')}"`;
|
|
141
|
+
}
|
|
142
|
+
return path3 ? `${path3}: ${issue.message}` : issue.message;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
async function validateFile(filePath, schema, extractor) {
|
|
146
|
+
try {
|
|
147
|
+
if (!await fileExists(filePath)) {
|
|
148
|
+
return { valid: false, errors: [`File not found: ${filePath}`] };
|
|
149
|
+
}
|
|
150
|
+
const content = await readFile(filePath);
|
|
151
|
+
let parsed;
|
|
152
|
+
if (extractor) {
|
|
153
|
+
parsed = extractor(content);
|
|
154
|
+
if (parsed === null) {
|
|
155
|
+
return {
|
|
156
|
+
valid: false,
|
|
157
|
+
errors: ["Failed to extract content (no valid frontmatter found)"]
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
parsed = parseYaml(content);
|
|
162
|
+
}
|
|
163
|
+
const result = schema.safeParse(parsed);
|
|
164
|
+
if (result.success) {
|
|
165
|
+
return { valid: true, errors: [] };
|
|
166
|
+
}
|
|
167
|
+
return { valid: false, errors: formatZodErrors(result.error) };
|
|
168
|
+
} catch (error) {
|
|
169
|
+
const message = getErrorMessage(error);
|
|
170
|
+
return { valid: false, errors: [`Failed to parse content: ${message}`] };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async function validateTarget(target, rootDir = process.cwd()) {
|
|
174
|
+
const baseDir = path.join(rootDir, target.baseDir);
|
|
175
|
+
const pattern = path.join(baseDir, target.pattern);
|
|
176
|
+
const files = await fg(pattern, { absolute: true });
|
|
177
|
+
const result = {
|
|
178
|
+
schemaName: target.name,
|
|
179
|
+
valid: true,
|
|
180
|
+
totalFiles: files.length,
|
|
181
|
+
validFiles: 0,
|
|
182
|
+
invalidFiles: []
|
|
183
|
+
};
|
|
184
|
+
if (files.length === 0) {
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
for (const file of files) {
|
|
188
|
+
const validation = await validateFile(file, target.schema, target.extractor);
|
|
189
|
+
const relativePath = path.relative(rootDir, file);
|
|
190
|
+
if (validation.valid) {
|
|
191
|
+
result.validFiles++;
|
|
192
|
+
} else {
|
|
193
|
+
result.valid = false;
|
|
194
|
+
result.invalidFiles.push({
|
|
195
|
+
file: relativePath,
|
|
196
|
+
errors: validation.errors
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
async function validateAllSchemas(rootDir = process.cwd()) {
|
|
203
|
+
const results = [];
|
|
204
|
+
for (const target of VALIDATION_TARGETS) {
|
|
205
|
+
const result = await validateTarget(target, rootDir);
|
|
206
|
+
results.push(result);
|
|
207
|
+
}
|
|
208
|
+
const summary = {
|
|
209
|
+
totalSchemas: results.length,
|
|
210
|
+
totalFiles: sumBy(results, (r) => r.totalFiles),
|
|
211
|
+
validFiles: sumBy(results, (r) => r.validFiles),
|
|
212
|
+
invalidFiles: sumBy(results, (r) => r.invalidFiles.length)
|
|
213
|
+
};
|
|
214
|
+
return {
|
|
215
|
+
valid: results.every((r) => r.valid),
|
|
216
|
+
results,
|
|
217
|
+
summary
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function printValidationResults(result) {
|
|
221
|
+
log("\n Schema Validation Summary:");
|
|
222
|
+
log(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
|
|
223
|
+
log(` Total schemas checked: ${result.summary.totalSchemas}`);
|
|
224
|
+
log(` Total files: ${result.summary.totalFiles}`);
|
|
225
|
+
log(` Valid: ${result.summary.validFiles}`);
|
|
226
|
+
log(` Invalid: ${result.summary.invalidFiles}`);
|
|
227
|
+
for (const schemaResult of result.results) {
|
|
228
|
+
if (schemaResult.totalFiles === 0) continue;
|
|
229
|
+
const status = schemaResult.valid ? "\u2713" : "\u2717";
|
|
230
|
+
log(
|
|
231
|
+
`
|
|
232
|
+
${status} ${schemaResult.schemaName}: ${schemaResult.validFiles}/${schemaResult.totalFiles} valid`
|
|
233
|
+
);
|
|
234
|
+
if (schemaResult.invalidFiles.length > 0) {
|
|
235
|
+
for (const file of schemaResult.invalidFiles) {
|
|
236
|
+
log(`
|
|
237
|
+
${file.file}:`);
|
|
238
|
+
file.errors.forEach((e) => log(` - ${e}`));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (result.valid) {
|
|
243
|
+
log("\n \u2713 All schemas validated successfully\n");
|
|
244
|
+
} else {
|
|
245
|
+
log("\n \u2717 Validation failed\n");
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// src/cli/commands/validate.ts
|
|
250
|
+
var Validate = class _Validate extends BaseCommand {
|
|
251
|
+
static summary = "Validate YAML files against schemas or validate compiled plugins";
|
|
252
|
+
static description = "Validates skill/agent YAML files against JSON schemas, or validates compiled plugin structure and content. Without arguments, validates all YAML files in the current directory against their schemas. With a path argument or --plugins flag, validates plugin(s) instead.";
|
|
253
|
+
static examples = [
|
|
254
|
+
{
|
|
255
|
+
description: "Validate all YAML schemas",
|
|
256
|
+
command: "<%= config.bin %> <%= command.id %>"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
description: "Validate a specific plugin",
|
|
260
|
+
command: "<%= config.bin %> <%= command.id %> ./path/to/plugin"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
description: "Validate all plugins in a directory",
|
|
264
|
+
command: "<%= config.bin %> <%= command.id %> ./plugins --all"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
description: "Validate plugins with verbose output",
|
|
268
|
+
command: "<%= config.bin %> <%= command.id %> --plugins --verbose"
|
|
269
|
+
}
|
|
270
|
+
];
|
|
271
|
+
static args = {
|
|
272
|
+
path: Args.string({
|
|
273
|
+
description: "Path to plugin or plugins directory to validate",
|
|
274
|
+
required: false
|
|
275
|
+
})
|
|
276
|
+
};
|
|
277
|
+
static flags = {
|
|
278
|
+
...BaseCommand.baseFlags,
|
|
279
|
+
verbose: Flags.boolean({
|
|
280
|
+
char: "v",
|
|
281
|
+
description: "Enable verbose logging",
|
|
282
|
+
default: false
|
|
283
|
+
}),
|
|
284
|
+
all: Flags.boolean({
|
|
285
|
+
char: "a",
|
|
286
|
+
description: "Validate all plugins in directory",
|
|
287
|
+
default: false
|
|
288
|
+
}),
|
|
289
|
+
plugins: Flags.boolean({
|
|
290
|
+
char: "p",
|
|
291
|
+
description: "Validate plugins instead of schemas",
|
|
292
|
+
default: false
|
|
293
|
+
})
|
|
294
|
+
};
|
|
295
|
+
async run() {
|
|
296
|
+
const { args, flags } = await this.parse(_Validate);
|
|
297
|
+
if (args.path || flags.plugins) {
|
|
298
|
+
await this.validatePlugins(args.path, flags.verbose, flags.all);
|
|
299
|
+
} else {
|
|
300
|
+
await this.validateSchemas();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
async validateSchemas() {
|
|
304
|
+
this.log("");
|
|
305
|
+
this.log("Validating all schemas");
|
|
306
|
+
this.log("");
|
|
307
|
+
try {
|
|
308
|
+
const result = await validateAllSchemas();
|
|
309
|
+
const summary = result.valid ? `Done: ${result.summary.validFiles}/${result.summary.totalFiles} files valid` : `Done: ${result.summary.invalidFiles} invalid files`;
|
|
310
|
+
this.log(summary);
|
|
311
|
+
printValidationResults(result);
|
|
312
|
+
if (!result.valid) {
|
|
313
|
+
this.exit(EXIT_CODES.ERROR);
|
|
314
|
+
}
|
|
315
|
+
} catch (error) {
|
|
316
|
+
const message = getErrorMessage(error);
|
|
317
|
+
this.error(`${ERROR_MESSAGES.VALIDATION_FAILED}: ${message}`, { exit: EXIT_CODES.ERROR });
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
async validatePlugins(pluginPath, verbose, all) {
|
|
321
|
+
const targetPath = pluginPath ? path2.resolve(pluginPath) : process.cwd();
|
|
322
|
+
if (all) {
|
|
323
|
+
await this.validateAllPluginsInDirectory(targetPath, verbose);
|
|
324
|
+
} else {
|
|
325
|
+
await this.validateSinglePlugin(targetPath, verbose);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
async validateAllPluginsInDirectory(targetPath, verbose) {
|
|
329
|
+
this.log("");
|
|
330
|
+
this.log(`Validating all plugins in: ${targetPath}`);
|
|
331
|
+
this.log("");
|
|
332
|
+
try {
|
|
333
|
+
const result = await validateAllPlugins(targetPath);
|
|
334
|
+
const summary = result.valid ? `Done: ${result.summary.valid}/${result.summary.total} plugins valid` : `Done: ${result.summary.invalid} invalid plugins`;
|
|
335
|
+
this.log(summary);
|
|
336
|
+
this.log("");
|
|
337
|
+
this.log(" Plugin Validation Summary:");
|
|
338
|
+
this.log(" -------------------------");
|
|
339
|
+
this.log(` Total plugins: ${result.summary.total}`);
|
|
340
|
+
this.log(` Valid: ${result.summary.valid}`);
|
|
341
|
+
this.log(` Invalid: ${result.summary.invalid}`);
|
|
342
|
+
this.log(` With warnings: ${result.summary.withWarnings}`);
|
|
343
|
+
for (const { name, result: pluginResult } of result.results) {
|
|
344
|
+
printPluginValidationResult(name, pluginResult, verbose);
|
|
345
|
+
}
|
|
346
|
+
if (result.valid) {
|
|
347
|
+
this.log("");
|
|
348
|
+
this.logSuccess("All plugins validated successfully");
|
|
349
|
+
this.log("");
|
|
350
|
+
} else {
|
|
351
|
+
this.log("");
|
|
352
|
+
this.error(ERROR_MESSAGES.VALIDATION_FAILED, { exit: EXIT_CODES.ERROR });
|
|
353
|
+
}
|
|
354
|
+
} catch (error) {
|
|
355
|
+
const message = getErrorMessage(error);
|
|
356
|
+
this.error(`${ERROR_MESSAGES.VALIDATION_FAILED}: ${message}`, { exit: EXIT_CODES.ERROR });
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
async validateSinglePlugin(targetPath, _verbose) {
|
|
360
|
+
this.log("");
|
|
361
|
+
this.log(`Validating plugin: ${targetPath}`);
|
|
362
|
+
this.log("");
|
|
363
|
+
try {
|
|
364
|
+
const result = await validatePlugin(targetPath);
|
|
365
|
+
const summary = result.valid ? "Done: Plugin is valid" : "Done: Plugin has errors";
|
|
366
|
+
this.log(summary);
|
|
367
|
+
printPluginValidationResult(path2.basename(targetPath), result, true);
|
|
368
|
+
if (result.valid && result.warnings.length === 0) {
|
|
369
|
+
this.log("");
|
|
370
|
+
this.logSuccess("Plugin validated successfully");
|
|
371
|
+
this.log("");
|
|
372
|
+
} else if (result.valid) {
|
|
373
|
+
this.log("");
|
|
374
|
+
this.logWarning("Plugin valid with warnings");
|
|
375
|
+
this.log("");
|
|
376
|
+
} else {
|
|
377
|
+
this.log("");
|
|
378
|
+
this.error(ERROR_MESSAGES.VALIDATION_FAILED, { exit: EXIT_CODES.ERROR });
|
|
379
|
+
}
|
|
380
|
+
} catch (error) {
|
|
381
|
+
const message = getErrorMessage(error);
|
|
382
|
+
this.error(`${ERROR_MESSAGES.VALIDATION_FAILED}: ${message}`, { exit: EXIT_CODES.ERROR });
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
export {
|
|
387
|
+
Validate as default
|
|
388
|
+
};
|
|
389
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/validate.ts","../../src/cli/lib/schema-validator.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { BaseCommand } from \"../base-command.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { ERROR_MESSAGES } from \"../utils/messages.js\";\nimport { validateAllSchemas, printValidationResults } from \"../lib/schema-validator.js\";\nimport {\n validatePlugin,\n validateAllPlugins,\n printPluginValidationResult,\n} from \"../lib/plugins/index.js\";\n\nexport default class Validate extends BaseCommand {\n static summary = \"Validate YAML files against schemas or validate compiled plugins\";\n static description =\n \"Validates skill/agent YAML files against JSON schemas, or validates compiled plugin structure and content. \" +\n \"Without arguments, validates all YAML files in the current directory against their schemas. \" +\n \"With a path argument or --plugins flag, validates plugin(s) instead.\";\n\n static examples = [\n {\n description: \"Validate all YAML schemas\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Validate a specific plugin\",\n command: \"<%= config.bin %> <%= command.id %> ./path/to/plugin\",\n },\n {\n description: \"Validate all plugins in a directory\",\n command: \"<%= config.bin %> <%= command.id %> ./plugins --all\",\n },\n {\n description: \"Validate plugins with verbose output\",\n command: \"<%= config.bin %> <%= command.id %> --plugins --verbose\",\n },\n ];\n\n static args = {\n path: Args.string({\n description: \"Path to plugin or plugins directory to validate\",\n required: false,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n all: Flags.boolean({\n char: \"a\",\n description: \"Validate all plugins in directory\",\n default: false,\n }),\n plugins: Flags.boolean({\n char: \"p\",\n description: \"Validate plugins instead of schemas\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Validate);\n\n if (args.path || flags.plugins) {\n await this.validatePlugins(args.path, flags.verbose, flags.all);\n } else {\n await this.validateSchemas();\n }\n }\n\n private async validateSchemas(): Promise<void> {\n this.log(\"\");\n this.log(\"Validating all schemas\");\n this.log(\"\");\n\n try {\n const result = await validateAllSchemas();\n\n const summary = result.valid\n ? `Done: ${result.summary.validFiles}/${result.summary.totalFiles} files valid`\n : `Done: ${result.summary.invalidFiles} invalid files`;\n\n this.log(summary);\n printValidationResults(result);\n\n if (!result.valid) {\n this.exit(EXIT_CODES.ERROR);\n }\n } catch (error) {\n const message = getErrorMessage(error);\n this.error(`${ERROR_MESSAGES.VALIDATION_FAILED}: ${message}`, { exit: EXIT_CODES.ERROR });\n }\n }\n\n private async validatePlugins(\n pluginPath: string | undefined,\n verbose: boolean,\n all: boolean,\n ): Promise<void> {\n const targetPath = pluginPath ? path.resolve(pluginPath) : process.cwd();\n\n if (all) {\n await this.validateAllPluginsInDirectory(targetPath, verbose);\n } else {\n await this.validateSinglePlugin(targetPath, verbose);\n }\n }\n\n private async validateAllPluginsInDirectory(targetPath: string, verbose: boolean): Promise<void> {\n this.log(\"\");\n this.log(`Validating all plugins in: ${targetPath}`);\n this.log(\"\");\n\n try {\n const result = await validateAllPlugins(targetPath);\n\n const summary = result.valid\n ? `Done: ${result.summary.valid}/${result.summary.total} plugins valid`\n : `Done: ${result.summary.invalid} invalid plugins`;\n\n this.log(summary);\n\n this.log(\"\");\n this.log(\" Plugin Validation Summary:\");\n this.log(\" -------------------------\");\n this.log(` Total plugins: ${result.summary.total}`);\n this.log(` Valid: ${result.summary.valid}`);\n this.log(` Invalid: ${result.summary.invalid}`);\n this.log(` With warnings: ${result.summary.withWarnings}`);\n\n for (const { name, result: pluginResult } of result.results) {\n printPluginValidationResult(name, pluginResult, verbose);\n }\n\n if (result.valid) {\n this.log(\"\");\n this.logSuccess(\"All plugins validated successfully\");\n this.log(\"\");\n } else {\n this.log(\"\");\n this.error(ERROR_MESSAGES.VALIDATION_FAILED, { exit: EXIT_CODES.ERROR });\n }\n } catch (error) {\n const message = getErrorMessage(error);\n this.error(`${ERROR_MESSAGES.VALIDATION_FAILED}: ${message}`, { exit: EXIT_CODES.ERROR });\n }\n }\n\n private async validateSinglePlugin(targetPath: string, _verbose: boolean): Promise<void> {\n this.log(\"\");\n this.log(`Validating plugin: ${targetPath}`);\n this.log(\"\");\n\n try {\n const result = await validatePlugin(targetPath);\n\n const summary = result.valid ? \"Done: Plugin is valid\" : \"Done: Plugin has errors\";\n\n this.log(summary);\n\n printPluginValidationResult(path.basename(targetPath), result, true);\n\n if (result.valid && result.warnings.length === 0) {\n this.log(\"\");\n this.logSuccess(\"Plugin validated successfully\");\n this.log(\"\");\n } else if (result.valid) {\n this.log(\"\");\n this.logWarning(\"Plugin valid with warnings\");\n this.log(\"\");\n } else {\n this.log(\"\");\n this.error(ERROR_MESSAGES.VALIDATION_FAILED, { exit: EXIT_CODES.ERROR });\n }\n } catch (error) {\n const message = getErrorMessage(error);\n this.error(`${ERROR_MESSAGES.VALIDATION_FAILED}: ${message}`, { exit: EXIT_CODES.ERROR });\n }\n }\n}\n","import { sumBy } from \"remeda\";\nimport { z } from \"zod\";\nimport path from \"path\";\nimport { getErrorMessage } from \"../utils/errors\";\nimport { readFile, fileExists } from \"../utils/fs\";\nimport { parse as parseYaml } from \"yaml\";\nimport fg from \"fast-glob\";\nimport { extractFrontmatter } from \"../utils/frontmatter\";\nimport { log } from \"../utils/logger\";\nimport {\n skillsMatrixConfigSchema,\n metadataValidationSchema,\n stackConfigValidationSchema,\n skillFrontmatterValidationSchema,\n agentFrontmatterValidationSchema,\n agentYamlGenerationSchema,\n stacksConfigSchema,\n projectSourceConfigSchema,\n pluginManifestSchema,\n} from \"./schemas\";\nimport { CLAUDE_DIR, CLAUDE_SRC_DIR, STANDARD_FILES } from \"../consts\";\n\ntype FileValidationError = {\n file: string;\n errors: string[];\n};\n\ntype SchemaValidationResult = {\n schemaName: string;\n valid: boolean;\n totalFiles: number;\n validFiles: number;\n invalidFiles: FileValidationError[];\n};\n\nexport type FullValidationResult = {\n valid: boolean;\n results: SchemaValidationResult[];\n summary: {\n totalSchemas: number;\n totalFiles: number;\n validFiles: number;\n invalidFiles: number;\n };\n};\n\ntype ContentExtractor = (content: string) => unknown | null;\n\ntype ValidationTarget = {\n name: string;\n schema: z.ZodType<unknown>;\n pattern: string;\n baseDir: string;\n extractor?: ContentExtractor;\n};\n\nconst VALIDATION_TARGETS: ValidationTarget[] = [\n {\n name: \"Skills Matrix\",\n schema: skillsMatrixConfigSchema,\n pattern: STANDARD_FILES.SKILLS_MATRIX_YAML,\n baseDir: \"src/config\",\n },\n {\n name: \"Skill Metadata\",\n schema: metadataValidationSchema,\n pattern: `**/${STANDARD_FILES.METADATA_YAML}`,\n baseDir: \"src/skills\",\n },\n {\n name: \"Stack Skill Metadata\",\n schema: metadataValidationSchema,\n pattern: `**/skills/**/${STANDARD_FILES.METADATA_YAML}`,\n baseDir: \"src/stacks\",\n },\n {\n name: \"Stack Config\",\n schema: stackConfigValidationSchema,\n pattern: `*/${STANDARD_FILES.CONFIG_YAML}`,\n baseDir: \"src/stacks\",\n },\n {\n name: \"Agent Definition\",\n schema: agentYamlGenerationSchema,\n pattern: `**/${STANDARD_FILES.AGENT_YAML}`,\n baseDir: \"src/agents\",\n },\n {\n name: \"Skill Frontmatter\",\n schema: skillFrontmatterValidationSchema,\n pattern: `**/${STANDARD_FILES.SKILL_MD}`,\n baseDir: \"src/skills\",\n extractor: extractFrontmatter,\n },\n {\n name: \"Stack Skill Frontmatter\",\n schema: skillFrontmatterValidationSchema,\n pattern: `**/skills/**/${STANDARD_FILES.SKILL_MD}`,\n baseDir: \"src/stacks\",\n extractor: extractFrontmatter,\n },\n {\n name: \"Stacks Config\",\n schema: stacksConfigSchema,\n pattern: \"stacks.yaml\",\n baseDir: \"config\",\n },\n {\n name: \"Project Source Config\",\n schema: projectSourceConfigSchema,\n pattern: STANDARD_FILES.CONFIG_YAML,\n baseDir: CLAUDE_SRC_DIR,\n },\n {\n name: \"Project Skill Metadata\",\n schema: metadataValidationSchema,\n pattern: `*/${STANDARD_FILES.METADATA_YAML}`,\n baseDir: `${CLAUDE_DIR}/skills`,\n },\n {\n name: \"Project Skill Frontmatter\",\n schema: skillFrontmatterValidationSchema,\n pattern: `*/${STANDARD_FILES.SKILL_MD}`,\n baseDir: `${CLAUDE_DIR}/skills`,\n extractor: extractFrontmatter,\n },\n {\n name: \"Project Agent Frontmatter\",\n schema: agentFrontmatterValidationSchema,\n pattern: \"*.md\",\n baseDir: `${CLAUDE_DIR}/agents`,\n extractor: extractFrontmatter,\n },\n {\n name: \"Plugin Manifest\",\n schema: pluginManifestSchema,\n pattern: `*/${STANDARD_FILES.PLUGIN_JSON}`,\n baseDir: `${CLAUDE_DIR}/plugins`,\n extractor: (content: string) => JSON.parse(content) as unknown,\n },\n];\n\nfunction formatZodErrors(error: z.ZodError): string[] {\n return error.issues.map((issue) => {\n const path = issue.path.join(\".\");\n if (issue.code === \"unrecognized_keys\") {\n return `Unrecognized key: \"${issue.keys.join('\", \"')}\"`;\n }\n return path ? `${path}: ${issue.message}` : issue.message;\n });\n}\n\nasync function validateFile(\n filePath: string,\n schema: z.ZodType<unknown>,\n extractor?: ContentExtractor,\n): Promise<{ valid: boolean; errors: string[] }> {\n try {\n if (!(await fileExists(filePath))) {\n return { valid: false, errors: [`File not found: ${filePath}`] };\n }\n\n const content = await readFile(filePath);\n\n let parsed: unknown;\n if (extractor) {\n parsed = extractor(content);\n if (parsed === null) {\n return {\n valid: false,\n errors: [\"Failed to extract content (no valid frontmatter found)\"],\n };\n }\n } else {\n parsed = parseYaml(content);\n }\n\n const result = schema.safeParse(parsed);\n\n if (result.success) {\n return { valid: true, errors: [] };\n }\n\n return { valid: false, errors: formatZodErrors(result.error) };\n } catch (error) {\n const message = getErrorMessage(error);\n return { valid: false, errors: [`Failed to parse content: ${message}`] };\n }\n}\n\nasync function validateTarget(\n target: ValidationTarget,\n rootDir: string = process.cwd(),\n): Promise<SchemaValidationResult> {\n const baseDir = path.join(rootDir, target.baseDir);\n const pattern = path.join(baseDir, target.pattern);\n const files = await fg(pattern, { absolute: true });\n\n const result: SchemaValidationResult = {\n schemaName: target.name,\n valid: true,\n totalFiles: files.length,\n validFiles: 0,\n invalidFiles: [],\n };\n\n if (files.length === 0) {\n return result;\n }\n\n for (const file of files) {\n const validation = await validateFile(file, target.schema, target.extractor);\n const relativePath = path.relative(rootDir, file);\n\n if (validation.valid) {\n result.validFiles++;\n } else {\n result.valid = false;\n result.invalidFiles.push({\n file: relativePath,\n errors: validation.errors,\n });\n }\n }\n\n return result;\n}\n\nexport async function validateAllSchemas(\n rootDir: string = process.cwd(),\n): Promise<FullValidationResult> {\n const results: SchemaValidationResult[] = [];\n\n for (const target of VALIDATION_TARGETS) {\n const result = await validateTarget(target, rootDir);\n results.push(result);\n }\n\n const summary = {\n totalSchemas: results.length,\n totalFiles: sumBy(results, (r) => r.totalFiles),\n validFiles: sumBy(results, (r) => r.validFiles),\n invalidFiles: sumBy(results, (r) => r.invalidFiles.length),\n };\n\n return {\n valid: results.every((r) => r.valid),\n results,\n summary,\n };\n}\n\nexport function printValidationResults(result: FullValidationResult): void {\n log(\"\\n Schema Validation Summary:\");\n log(\" ─────────────────────────\");\n log(` Total schemas checked: ${result.summary.totalSchemas}`);\n log(` Total files: ${result.summary.totalFiles}`);\n log(` Valid: ${result.summary.validFiles}`);\n log(` Invalid: ${result.summary.invalidFiles}`);\n\n for (const schemaResult of result.results) {\n if (schemaResult.totalFiles === 0) continue;\n\n const status = schemaResult.valid ? \"✓\" : \"✗\";\n log(\n `\\n ${status} ${schemaResult.schemaName}: ${schemaResult.validFiles}/${schemaResult.totalFiles} valid`,\n );\n\n if (schemaResult.invalidFiles.length > 0) {\n for (const file of schemaResult.invalidFiles) {\n log(`\\n ${file.file}:`);\n file.errors.forEach((e) => log(` - ${e}`));\n }\n }\n }\n\n if (result.valid) {\n log(\"\\n ✓ All schemas validated successfully\\n\");\n } else {\n log(\"\\n ✗ Validation failed\\n\");\n }\n}\n"],"mappings":"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","names":["path","path","path"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
BaseCommand,
|
|
4
|
+
EXIT_CODES
|
|
5
|
+
} from "../../chunk-ODUOU55D.js";
|
|
6
|
+
import {
|
|
7
|
+
bumpPluginVersion,
|
|
8
|
+
findPluginManifest
|
|
9
|
+
} from "../../chunk-MM7NK5N2.js";
|
|
10
|
+
import "../../chunk-T4EXUIBY.js";
|
|
11
|
+
import {
|
|
12
|
+
pluginManifestSchema,
|
|
13
|
+
readFile
|
|
14
|
+
} from "../../chunk-BZN2Z5P7.js";
|
|
15
|
+
import {
|
|
16
|
+
PLUGIN_MANIFEST_DIR,
|
|
17
|
+
PLUGIN_MANIFEST_FILE
|
|
18
|
+
} from "../../chunk-LAPCUV4D.js";
|
|
19
|
+
import {
|
|
20
|
+
init_esm_shims
|
|
21
|
+
} from "../../chunk-DHET7RCE.js";
|
|
22
|
+
|
|
23
|
+
// src/cli/commands/version/bump.ts
|
|
24
|
+
init_esm_shims();
|
|
25
|
+
import { Args } from "@oclif/core";
|
|
26
|
+
import path from "path";
|
|
27
|
+
var VersionBump = class _VersionBump extends BaseCommand {
|
|
28
|
+
static summary = "Bump plugin version";
|
|
29
|
+
static description = "Increment the plugin version by the specified type (major, minor, or patch).";
|
|
30
|
+
static args = {
|
|
31
|
+
type: Args.string({
|
|
32
|
+
description: "Version bump type",
|
|
33
|
+
required: true,
|
|
34
|
+
options: ["major", "minor", "patch"]
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
static flags = {
|
|
38
|
+
...BaseCommand.baseFlags
|
|
39
|
+
};
|
|
40
|
+
static examples = [
|
|
41
|
+
"<%= config.bin %> <%= command.id %> patch",
|
|
42
|
+
"<%= config.bin %> <%= command.id %> minor",
|
|
43
|
+
"<%= config.bin %> <%= command.id %> major",
|
|
44
|
+
"<%= config.bin %> <%= command.id %> patch --dry-run"
|
|
45
|
+
];
|
|
46
|
+
async run() {
|
|
47
|
+
const { args, flags } = await this.parse(_VersionBump);
|
|
48
|
+
const bumpType = args.type;
|
|
49
|
+
const manifestPath = await findPluginManifest(process.cwd());
|
|
50
|
+
if (!manifestPath) {
|
|
51
|
+
this.error(
|
|
52
|
+
`No plugin.json found in current directory or parents
|
|
53
|
+
Expected location: ${PLUGIN_MANIFEST_DIR}/${PLUGIN_MANIFEST_FILE}`,
|
|
54
|
+
{ exit: EXIT_CODES.ERROR }
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
const pluginDir = path.dirname(path.dirname(manifestPath));
|
|
58
|
+
try {
|
|
59
|
+
const content = await readFile(manifestPath);
|
|
60
|
+
const manifest = pluginManifestSchema.parse(JSON.parse(content));
|
|
61
|
+
const oldVersion = manifest.version || "1.0.0";
|
|
62
|
+
const pluginName = manifest.name || "unknown";
|
|
63
|
+
if (flags["dry-run"]) {
|
|
64
|
+
this.log(`[DRY RUN] Would bump ${pluginName} version: ${oldVersion} -> ${bumpType}`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const newVersion = await bumpPluginVersion(pluginDir, bumpType);
|
|
68
|
+
this.log(`${pluginName}: ${oldVersion} -> ${newVersion}`);
|
|
69
|
+
} catch (error) {
|
|
70
|
+
this.error(`Failed to bump plugin version: ${error}`, {
|
|
71
|
+
exit: EXIT_CODES.ERROR
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
export {
|
|
77
|
+
VersionBump as default
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=bump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/version/bump.ts"],"sourcesContent":["import { Args } from \"@oclif/core\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../../base-command.js\";\nimport { PLUGIN_MANIFEST_DIR, PLUGIN_MANIFEST_FILE } from \"../../consts.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport {\n bumpPluginVersion,\n type VersionBumpType,\n findPluginManifest,\n} from \"../../lib/plugins/index.js\";\nimport { pluginManifestSchema } from \"../../lib/schemas.js\";\nimport { readFile } from \"../../utils/fs.js\";\n\nexport default class VersionBump extends BaseCommand {\n static summary = \"Bump plugin version\";\n static description =\n \"Increment the plugin version by the specified type (major, minor, or patch).\";\n\n static args = {\n type: Args.string({\n description: \"Version bump type\",\n required: true,\n options: [\"major\", \"minor\", \"patch\"],\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n };\n\n static examples = [\n \"<%= config.bin %> <%= command.id %> patch\",\n \"<%= config.bin %> <%= command.id %> minor\",\n \"<%= config.bin %> <%= command.id %> major\",\n \"<%= config.bin %> <%= command.id %> patch --dry-run\",\n ];\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(VersionBump);\n const bumpType = args.type as VersionBumpType;\n\n const manifestPath = await findPluginManifest(process.cwd());\n\n if (!manifestPath) {\n this.error(\n `No plugin.json found in current directory or parents\\nExpected location: ${PLUGIN_MANIFEST_DIR}/${PLUGIN_MANIFEST_FILE}`,\n { exit: EXIT_CODES.ERROR },\n );\n }\n\n const pluginDir = path.dirname(path.dirname(manifestPath));\n\n try {\n const content = await readFile(manifestPath);\n const manifest = pluginManifestSchema.parse(JSON.parse(content));\n const oldVersion = manifest.version || \"1.0.0\";\n const pluginName = manifest.name || \"unknown\";\n\n if (flags[\"dry-run\"]) {\n this.log(`[DRY RUN] Would bump ${pluginName} version: ${oldVersion} -> ${bumpType}`);\n return;\n }\n\n const newVersion = await bumpPluginVersion(pluginDir, bumpType);\n this.log(`${pluginName}: ${oldVersion} -> ${newVersion}`);\n } catch (error) {\n this.error(`Failed to bump plugin version: ${error}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAS,YAAY;AACrB,OAAO,UAAU;AAajB,IAAqB,cAArB,MAAqB,qBAAoB,YAAY;AAAA,EACnD,OAAO,UAAU;AAAA,EACjB,OAAO,cACL;AAAA,EAEF,OAAO,OAAO;AAAA,IACZ,MAAM,KAAK,OAAO;AAAA,MAChB,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS,CAAC,SAAS,SAAS,OAAO;AAAA,IACrC,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,QAAQ;AAAA,IACb,GAAG,YAAY;AAAA,EACjB;AAAA,EAEA,OAAO,WAAW;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,YAAW;AACpD,UAAM,WAAW,KAAK;AAEtB,UAAM,eAAe,MAAM,mBAAmB,QAAQ,IAAI,CAAC;AAE3D,QAAI,CAAC,cAAc;AACjB,WAAK;AAAA,QACH;AAAA,qBAA4E,mBAAmB,IAAI,oBAAoB;AAAA,QACvH,EAAE,MAAM,WAAW,MAAM;AAAA,MAC3B;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,QAAQ,KAAK,QAAQ,YAAY,CAAC;AAEzD,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,YAAY;AAC3C,YAAM,WAAW,qBAAqB,MAAM,KAAK,MAAM,OAAO,CAAC;AAC/D,YAAM,aAAa,SAAS,WAAW;AACvC,YAAM,aAAa,SAAS,QAAQ;AAEpC,UAAI,MAAM,SAAS,GAAG;AACpB,aAAK,IAAI,wBAAwB,UAAU,aAAa,UAAU,OAAO,QAAQ,EAAE;AACnF;AAAA,MACF;AAEA,YAAM,aAAa,MAAM,kBAAkB,WAAW,QAAQ;AAC9D,WAAK,IAAI,GAAG,UAAU,KAAK,UAAU,OAAO,UAAU,EAAE;AAAA,IAC1D,SAAS,OAAO;AACd,WAAK,MAAM,kCAAkC,KAAK,IAAI;AAAA,QACpD,MAAM,WAAW;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
BaseCommand,
|
|
4
|
+
EXIT_CODES
|
|
5
|
+
} from "../../chunk-ODUOU55D.js";
|
|
6
|
+
import {
|
|
7
|
+
findPluginManifest,
|
|
8
|
+
getPluginVersion
|
|
9
|
+
} from "../../chunk-MM7NK5N2.js";
|
|
10
|
+
import "../../chunk-T4EXUIBY.js";
|
|
11
|
+
import "../../chunk-BZN2Z5P7.js";
|
|
12
|
+
import {
|
|
13
|
+
PLUGIN_MANIFEST_DIR,
|
|
14
|
+
PLUGIN_MANIFEST_FILE
|
|
15
|
+
} from "../../chunk-LAPCUV4D.js";
|
|
16
|
+
import {
|
|
17
|
+
init_esm_shims
|
|
18
|
+
} from "../../chunk-DHET7RCE.js";
|
|
19
|
+
|
|
20
|
+
// src/cli/commands/version/index.ts
|
|
21
|
+
init_esm_shims();
|
|
22
|
+
import path from "path";
|
|
23
|
+
var Version = class _Version extends BaseCommand {
|
|
24
|
+
static summary = "Show current plugin version";
|
|
25
|
+
static description = "Display the current version of the plugin in the current directory.";
|
|
26
|
+
static flags = {
|
|
27
|
+
...BaseCommand.baseFlags
|
|
28
|
+
};
|
|
29
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
30
|
+
async run() {
|
|
31
|
+
await this.parse(_Version);
|
|
32
|
+
const manifestPath = await findPluginManifest(process.cwd());
|
|
33
|
+
if (!manifestPath) {
|
|
34
|
+
this.error(
|
|
35
|
+
`No plugin.json found in current directory or parents
|
|
36
|
+
Expected location: ${PLUGIN_MANIFEST_DIR}/${PLUGIN_MANIFEST_FILE}`,
|
|
37
|
+
{ exit: EXIT_CODES.ERROR }
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
const pluginDir = path.dirname(path.dirname(manifestPath));
|
|
41
|
+
try {
|
|
42
|
+
const version = await getPluginVersion(pluginDir);
|
|
43
|
+
this.log(version);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
this.error(`Failed to read plugin version: ${error}`, {
|
|
46
|
+
exit: EXIT_CODES.ERROR
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
export {
|
|
52
|
+
Version as default
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/version/index.ts"],"sourcesContent":["import { BaseCommand } from \"../../base-command.js\";\nimport { getPluginVersion, findPluginManifest } from \"../../lib/plugins/index.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport path from \"path\";\nimport { PLUGIN_MANIFEST_DIR, PLUGIN_MANIFEST_FILE } from \"../../consts.js\";\n\nexport default class Version extends BaseCommand {\n static summary = \"Show current plugin version\";\n static description = \"Display the current version of the plugin in the current directory.\";\n\n static flags = {\n ...BaseCommand.baseFlags,\n };\n\n static examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n async run(): Promise<void> {\n await this.parse(Version);\n const manifestPath = await findPluginManifest(process.cwd());\n\n if (!manifestPath) {\n this.error(\n `No plugin.json found in current directory or parents\\nExpected location: ${PLUGIN_MANIFEST_DIR}/${PLUGIN_MANIFEST_FILE}`,\n { exit: EXIT_CODES.ERROR },\n );\n }\n\n const pluginDir = path.dirname(path.dirname(manifestPath));\n\n try {\n const version = await getPluginVersion(pluginDir);\n this.log(version);\n } catch (error) {\n this.error(`Failed to read plugin version: ${error}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAGA,OAAO,UAAU;AAGjB,IAAqB,UAArB,MAAqB,iBAAgB,YAAY;AAAA,EAC/C,OAAO,UAAU;AAAA,EACjB,OAAO,cAAc;AAAA,EAErB,OAAO,QAAQ;AAAA,IACb,GAAG,YAAY;AAAA,EACjB;AAAA,EAEA,OAAO,WAAW,CAAC,qCAAqC;AAAA,EAExD,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,QAAO;AACxB,UAAM,eAAe,MAAM,mBAAmB,QAAQ,IAAI,CAAC;AAE3D,QAAI,CAAC,cAAc;AACjB,WAAK;AAAA,QACH;AAAA,qBAA4E,mBAAmB,IAAI,oBAAoB;AAAA,QACvH,EAAE,MAAM,WAAW,MAAM;AAAA,MAC3B;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,QAAQ,KAAK,QAAQ,YAAY,CAAC;AAEzD,QAAI;AACF,YAAM,UAAU,MAAM,iBAAiB,SAAS;AAChD,WAAK,IAAI,OAAO;AAAA,IAClB,SAAS,OAAO;AACd,WAAK,MAAM,kCAAkC,KAAK,IAAI;AAAA,QACpD,MAAM,WAAW;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
BaseCommand,
|
|
4
|
+
EXIT_CODES
|
|
5
|
+
} from "../../chunk-ODUOU55D.js";
|
|
6
|
+
import {
|
|
7
|
+
findPluginManifest
|
|
8
|
+
} from "../../chunk-MM7NK5N2.js";
|
|
9
|
+
import "../../chunk-T4EXUIBY.js";
|
|
10
|
+
import {
|
|
11
|
+
pluginManifestSchema,
|
|
12
|
+
readFile,
|
|
13
|
+
writeFile
|
|
14
|
+
} from "../../chunk-BZN2Z5P7.js";
|
|
15
|
+
import {
|
|
16
|
+
PLUGIN_MANIFEST_DIR,
|
|
17
|
+
PLUGIN_MANIFEST_FILE
|
|
18
|
+
} from "../../chunk-LAPCUV4D.js";
|
|
19
|
+
import {
|
|
20
|
+
init_esm_shims
|
|
21
|
+
} from "../../chunk-DHET7RCE.js";
|
|
22
|
+
|
|
23
|
+
// src/cli/commands/version/set.ts
|
|
24
|
+
init_esm_shims();
|
|
25
|
+
import { Args } from "@oclif/core";
|
|
26
|
+
var SEMVER_REGEX = /^(\d+)\.(\d+)\.(\d+)$/;
|
|
27
|
+
function isValidSemver(version) {
|
|
28
|
+
return SEMVER_REGEX.test(version);
|
|
29
|
+
}
|
|
30
|
+
var VersionSet = class _VersionSet extends BaseCommand {
|
|
31
|
+
static summary = "Set plugin version to a specific value";
|
|
32
|
+
static description = "Set the plugin version to an explicit semantic version (e.g., 1.2.3).";
|
|
33
|
+
static args = {
|
|
34
|
+
version: Args.string({
|
|
35
|
+
description: "Version to set (semantic version format: X.Y.Z)",
|
|
36
|
+
required: true
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
static flags = {
|
|
40
|
+
...BaseCommand.baseFlags
|
|
41
|
+
};
|
|
42
|
+
static examples = [
|
|
43
|
+
"<%= config.bin %> <%= command.id %> 1.0.0",
|
|
44
|
+
"<%= config.bin %> <%= command.id %> 2.1.3",
|
|
45
|
+
"<%= config.bin %> <%= command.id %> 1.0.0 --dry-run"
|
|
46
|
+
];
|
|
47
|
+
async run() {
|
|
48
|
+
const { args, flags } = await this.parse(_VersionSet);
|
|
49
|
+
const newVersion = args.version;
|
|
50
|
+
if (!isValidSemver(newVersion)) {
|
|
51
|
+
this.error(
|
|
52
|
+
`Invalid version format: "${newVersion}". Must be semantic version (e.g., 1.0.0)`,
|
|
53
|
+
{ exit: EXIT_CODES.INVALID_ARGS }
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const manifestPath = await findPluginManifest(process.cwd());
|
|
57
|
+
if (!manifestPath) {
|
|
58
|
+
this.error(
|
|
59
|
+
`No plugin.json found in current directory or parents
|
|
60
|
+
Expected location: ${PLUGIN_MANIFEST_DIR}/${PLUGIN_MANIFEST_FILE}`,
|
|
61
|
+
{ exit: EXIT_CODES.ERROR }
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const content = await readFile(manifestPath);
|
|
66
|
+
const manifest = pluginManifestSchema.parse(JSON.parse(content));
|
|
67
|
+
const oldVersion = manifest.version || "1.0.0";
|
|
68
|
+
const pluginName = manifest.name || "unknown";
|
|
69
|
+
if (flags["dry-run"]) {
|
|
70
|
+
this.log(`[DRY RUN] Would set ${pluginName} version: ${oldVersion} -> ${newVersion}`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
manifest.version = newVersion;
|
|
74
|
+
await writeFile(manifestPath, JSON.stringify(manifest, null, 2));
|
|
75
|
+
this.log(`${pluginName}: ${oldVersion} -> ${newVersion}`);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
this.error(`Failed to set plugin version: ${error}`, {
|
|
78
|
+
exit: EXIT_CODES.ERROR
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
export {
|
|
84
|
+
VersionSet as default
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=set.js.map
|