@specforge/mcp 2.0.9 → 2.1.0
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 +324 -0
- package/bin/specforge-mcp +19 -1
- package/dist/cli/commands/blocked.d.ts +16 -0
- package/dist/cli/commands/blocked.d.ts.map +1 -0
- package/dist/cli/commands/blocked.js +214 -0
- package/dist/cli/commands/blocked.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +16 -0
- package/dist/cli/commands/configure.d.ts.map +1 -0
- package/dist/cli/commands/configure.js +218 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/configure.types.d.ts +110 -0
- package/dist/cli/commands/configure.types.d.ts.map +1 -0
- package/dist/cli/commands/configure.types.js +105 -0
- package/dist/cli/commands/configure.types.js.map +1 -0
- package/dist/cli/commands/debug/call.d.ts +14 -0
- package/dist/cli/commands/debug/call.d.ts.map +1 -0
- package/dist/cli/commands/debug/call.js +117 -0
- package/dist/cli/commands/debug/call.js.map +1 -0
- package/dist/cli/commands/debug/index.d.ts +12 -0
- package/dist/cli/commands/debug/index.d.ts.map +1 -0
- package/dist/cli/commands/debug/index.js +12 -0
- package/dist/cli/commands/debug/index.js.map +1 -0
- package/dist/cli/commands/debug/register.d.ts +11 -0
- package/dist/cli/commands/debug/register.d.ts.map +1 -0
- package/dist/cli/commands/debug/register.js +90 -0
- package/dist/cli/commands/debug/register.js.map +1 -0
- package/dist/cli/commands/debug/test.d.ts +13 -0
- package/dist/cli/commands/debug/test.d.ts.map +1 -0
- package/dist/cli/commands/debug/test.js +117 -0
- package/dist/cli/commands/debug/test.js.map +1 -0
- package/dist/cli/commands/debug/tools.d.ts +13 -0
- package/dist/cli/commands/debug/tools.d.ts.map +1 -0
- package/dist/cli/commands/debug/tools.js +117 -0
- package/dist/cli/commands/debug/tools.js.map +1 -0
- package/dist/cli/commands/debug/types.d.ts +117 -0
- package/dist/cli/commands/debug/types.d.ts.map +1 -0
- package/dist/cli/commands/debug/types.js +43 -0
- package/dist/cli/commands/debug/types.js.map +1 -0
- package/dist/cli/commands/debug/whoami.d.ts +13 -0
- package/dist/cli/commands/debug/whoami.d.ts.map +1 -0
- package/dist/cli/commands/debug/whoami.js +161 -0
- package/dist/cli/commands/debug/whoami.js.map +1 -0
- package/dist/cli/commands/docs/content/api.d.ts +7 -0
- package/dist/cli/commands/docs/content/api.d.ts.map +1 -0
- package/dist/cli/commands/docs/content/api.js +64 -0
- package/dist/cli/commands/docs/content/api.js.map +1 -0
- package/dist/cli/commands/docs/content/concepts.d.ts +7 -0
- package/dist/cli/commands/docs/content/concepts.d.ts.map +1 -0
- package/dist/cli/commands/docs/content/concepts.js +68 -0
- package/dist/cli/commands/docs/content/concepts.js.map +1 -0
- package/dist/cli/commands/docs/content/examples.d.ts +7 -0
- package/dist/cli/commands/docs/content/examples.d.ts.map +1 -0
- package/dist/cli/commands/docs/content/examples.js +84 -0
- package/dist/cli/commands/docs/content/examples.js.map +1 -0
- package/dist/cli/commands/docs/content/index.d.ts +10 -0
- package/dist/cli/commands/docs/content/index.d.ts.map +1 -0
- package/dist/cli/commands/docs/content/index.js +10 -0
- package/dist/cli/commands/docs/content/index.js.map +1 -0
- package/dist/cli/commands/docs/content/workflow.d.ts +7 -0
- package/dist/cli/commands/docs/content/workflow.d.ts.map +1 -0
- package/dist/cli/commands/docs/content/workflow.js +44 -0
- package/dist/cli/commands/docs/content/workflow.js.map +1 -0
- package/dist/cli/commands/docs/content.d.ts +23 -0
- package/dist/cli/commands/docs/content.d.ts.map +1 -0
- package/dist/cli/commands/docs/content.js +38 -0
- package/dist/cli/commands/docs/content.js.map +1 -0
- package/dist/cli/commands/docs/display.d.ts +26 -0
- package/dist/cli/commands/docs/display.d.ts.map +1 -0
- package/dist/cli/commands/docs/display.js +53 -0
- package/dist/cli/commands/docs/display.js.map +1 -0
- package/dist/cli/commands/docs/docs.d.ts +19 -0
- package/dist/cli/commands/docs/docs.d.ts.map +1 -0
- package/dist/cli/commands/docs/docs.js +124 -0
- package/dist/cli/commands/docs/docs.js.map +1 -0
- package/dist/cli/commands/docs/index.d.ts +13 -0
- package/dist/cli/commands/docs/index.d.ts.map +1 -0
- package/dist/cli/commands/docs/index.js +13 -0
- package/dist/cli/commands/docs/index.js.map +1 -0
- package/dist/cli/commands/docs/register.d.ts +23 -0
- package/dist/cli/commands/docs/register.d.ts.map +1 -0
- package/dist/cli/commands/docs/register.js +64 -0
- package/dist/cli/commands/docs/register.js.map +1 -0
- package/dist/cli/commands/docs/tool-docs.d.ts +44 -0
- package/dist/cli/commands/docs/tool-docs.d.ts.map +1 -0
- package/dist/cli/commands/docs/tool-docs.js +182 -0
- package/dist/cli/commands/docs/tool-docs.js.map +1 -0
- package/dist/cli/commands/docs/tool-examples.d.ts +14 -0
- package/dist/cli/commands/docs/tool-examples.d.ts.map +1 -0
- package/dist/cli/commands/docs/tool-examples.js +127 -0
- package/dist/cli/commands/docs/tool-examples.js.map +1 -0
- package/dist/cli/commands/docs/types.d.ts +108 -0
- package/dist/cli/commands/docs/types.d.ts.map +1 -0
- package/dist/cli/commands/docs/types.js +33 -0
- package/dist/cli/commands/docs/types.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +16 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +322 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/doctor.types.d.ts +177 -0
- package/dist/cli/commands/doctor.types.d.ts.map +1 -0
- package/dist/cli/commands/doctor.types.js +172 -0
- package/dist/cli/commands/doctor.types.js.map +1 -0
- package/dist/cli/commands/index.d.ts +18 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +18 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +17 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +326 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/init.types.d.ts +141 -0
- package/dist/cli/commands/init.types.d.ts.map +1 -0
- package/dist/cli/commands/init.types.js +24 -0
- package/dist/cli/commands/init.types.js.map +1 -0
- package/dist/cli/commands/login.d.ts +40 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +174 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/next.d.ts +16 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +279 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/next.types.d.ts +191 -0
- package/dist/cli/commands/next.types.d.ts.map +1 -0
- package/dist/cli/commands/next.types.js +129 -0
- package/dist/cli/commands/next.types.js.map +1 -0
- package/dist/cli/commands/projects.d.ts +16 -0
- package/dist/cli/commands/projects.d.ts.map +1 -0
- package/dist/cli/commands/projects.js +149 -0
- package/dist/cli/commands/projects.js.map +1 -0
- package/dist/cli/commands/projects.types.d.ts +81 -0
- package/dist/cli/commands/projects.types.d.ts.map +1 -0
- package/dist/cli/commands/projects.types.js +35 -0
- package/dist/cli/commands/projects.types.js.map +1 -0
- package/dist/cli/commands/review/display.d.ts +33 -0
- package/dist/cli/commands/review/display.d.ts.map +1 -0
- package/dist/cli/commands/review/display.js +159 -0
- package/dist/cli/commands/review/display.js.map +1 -0
- package/dist/cli/commands/review/epic-review.d.ts +13 -0
- package/dist/cli/commands/review/epic-review.d.ts.map +1 -0
- package/dist/cli/commands/review/epic-review.js +69 -0
- package/dist/cli/commands/review/epic-review.js.map +1 -0
- package/dist/cli/commands/review/index.d.ts +13 -0
- package/dist/cli/commands/review/index.d.ts.map +1 -0
- package/dist/cli/commands/review/index.js +17 -0
- package/dist/cli/commands/review/index.js.map +1 -0
- package/dist/cli/commands/review/report.d.ts +31 -0
- package/dist/cli/commands/review/report.d.ts.map +1 -0
- package/dist/cli/commands/review/report.js +146 -0
- package/dist/cli/commands/review/report.js.map +1 -0
- package/dist/cli/commands/review/review.d.ts +17 -0
- package/dist/cli/commands/review/review.d.ts.map +1 -0
- package/dist/cli/commands/review/review.js +129 -0
- package/dist/cli/commands/review/review.js.map +1 -0
- package/dist/cli/commands/review/spec-review.d.ts +13 -0
- package/dist/cli/commands/review/spec-review.d.ts.map +1 -0
- package/dist/cli/commands/review/spec-review.js +65 -0
- package/dist/cli/commands/review/spec-review.js.map +1 -0
- package/dist/cli/commands/review/ticket-review.d.ts +37 -0
- package/dist/cli/commands/review/ticket-review.d.ts.map +1 -0
- package/dist/cli/commands/review/ticket-review.js +194 -0
- package/dist/cli/commands/review/ticket-review.js.map +1 -0
- package/dist/cli/commands/review/types.d.ts +232 -0
- package/dist/cli/commands/review/types.d.ts.map +1 -0
- package/dist/cli/commands/review/types.js +85 -0
- package/dist/cli/commands/review/types.js.map +1 -0
- package/dist/cli/commands/scaffold/display.d.ts +27 -0
- package/dist/cli/commands/scaffold/display.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/display.js +90 -0
- package/dist/cli/commands/scaffold/display.js.map +1 -0
- package/dist/cli/commands/scaffold/index.d.ts +12 -0
- package/dist/cli/commands/scaffold/index.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/index.js +12 -0
- package/dist/cli/commands/scaffold/index.js.map +1 -0
- package/dist/cli/commands/scaffold/register.d.ts +11 -0
- package/dist/cli/commands/scaffold/register.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/register.js +25 -0
- package/dist/cli/commands/scaffold/register.js.map +1 -0
- package/dist/cli/commands/scaffold/scaffold.d.ts +11 -0
- package/dist/cli/commands/scaffold/scaffold.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/scaffold.js +111 -0
- package/dist/cli/commands/scaffold/scaffold.js.map +1 -0
- package/dist/cli/commands/scaffold/targets.d.ts +31 -0
- package/dist/cli/commands/scaffold/targets.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/targets.js +84 -0
- package/dist/cli/commands/scaffold/targets.js.map +1 -0
- package/dist/cli/commands/scaffold/types.d.ts +88 -0
- package/dist/cli/commands/scaffold/types.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/types.js +21 -0
- package/dist/cli/commands/scaffold/types.js.map +1 -0
- package/dist/cli/commands/scaffold/utils.d.ts +31 -0
- package/dist/cli/commands/scaffold/utils.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/utils.js +71 -0
- package/dist/cli/commands/scaffold/utils.js.map +1 -0
- package/dist/cli/commands/session/display.d.ts +40 -0
- package/dist/cli/commands/session/display.d.ts.map +1 -0
- package/dist/cli/commands/session/display.js +114 -0
- package/dist/cli/commands/session/display.js.map +1 -0
- package/dist/cli/commands/session/end.d.ts +12 -0
- package/dist/cli/commands/session/end.d.ts.map +1 -0
- package/dist/cli/commands/session/end.js +165 -0
- package/dist/cli/commands/session/end.js.map +1 -0
- package/dist/cli/commands/session/index.d.ts +13 -0
- package/dist/cli/commands/session/index.d.ts.map +1 -0
- package/dist/cli/commands/session/index.js +13 -0
- package/dist/cli/commands/session/index.js.map +1 -0
- package/dist/cli/commands/session/register.d.ts +12 -0
- package/dist/cli/commands/session/register.d.ts.map +1 -0
- package/dist/cli/commands/session/register.js +87 -0
- package/dist/cli/commands/session/register.js.map +1 -0
- package/dist/cli/commands/session/start.d.ts +12 -0
- package/dist/cli/commands/session/start.d.ts.map +1 -0
- package/dist/cli/commands/session/start.js +189 -0
- package/dist/cli/commands/session/start.js.map +1 -0
- package/dist/cli/commands/session/status.d.ts +12 -0
- package/dist/cli/commands/session/status.d.ts.map +1 -0
- package/dist/cli/commands/session/status.js +93 -0
- package/dist/cli/commands/session/status.js.map +1 -0
- package/dist/cli/commands/session/types.d.ts +179 -0
- package/dist/cli/commands/session/types.d.ts.map +1 -0
- package/dist/cli/commands/session/types.js +8 -0
- package/dist/cli/commands/session/types.js.map +1 -0
- package/dist/cli/commands/session/utils.d.ts +24 -0
- package/dist/cli/commands/session/utils.d.ts.map +1 -0
- package/dist/cli/commands/session/utils.js +72 -0
- package/dist/cli/commands/session/utils.js.map +1 -0
- package/dist/cli/commands/specs.d.ts +16 -0
- package/dist/cli/commands/specs.d.ts.map +1 -0
- package/dist/cli/commands/specs.js +212 -0
- package/dist/cli/commands/specs.js.map +1 -0
- package/dist/cli/commands/specs.types.d.ts +120 -0
- package/dist/cli/commands/specs.types.d.ts.map +1 -0
- package/dist/cli/commands/specs.types.js +75 -0
- package/dist/cli/commands/specs.types.js.map +1 -0
- package/dist/cli/commands/status.d.ts +17 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +271 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/status.types.d.ts +382 -0
- package/dist/cli/commands/status.types.d.ts.map +1 -0
- package/dist/cli/commands/status.types.js +166 -0
- package/dist/cli/commands/status.types.js.map +1 -0
- package/dist/cli/commands/switch.d.ts +18 -0
- package/dist/cli/commands/switch.d.ts.map +1 -0
- package/dist/cli/commands/switch.js +181 -0
- package/dist/cli/commands/switch.js.map +1 -0
- package/dist/cli/commands/switch.types.d.ts +123 -0
- package/dist/cli/commands/switch.types.d.ts.map +1 -0
- package/dist/cli/commands/switch.types.js +65 -0
- package/dist/cli/commands/switch.types.js.map +1 -0
- package/dist/cli/commands/ticket/command.d.ts +14 -0
- package/dist/cli/commands/ticket/command.d.ts.map +1 -0
- package/dist/cli/commands/ticket/command.js +141 -0
- package/dist/cli/commands/ticket/command.js.map +1 -0
- package/dist/cli/commands/ticket/display.d.ts +56 -0
- package/dist/cli/commands/ticket/display.d.ts.map +1 -0
- package/dist/cli/commands/ticket/display.js +205 -0
- package/dist/cli/commands/ticket/display.js.map +1 -0
- package/dist/cli/commands/ticket/index.d.ts +11 -0
- package/dist/cli/commands/ticket/index.d.ts.map +1 -0
- package/dist/cli/commands/ticket/index.js +11 -0
- package/dist/cli/commands/ticket/index.js.map +1 -0
- package/dist/cli/commands/ticket/register.d.ts +11 -0
- package/dist/cli/commands/ticket/register.d.ts.map +1 -0
- package/dist/cli/commands/ticket/register.js +39 -0
- package/dist/cli/commands/ticket/register.js.map +1 -0
- package/dist/cli/commands/ticket/resolver.d.ts +16 -0
- package/dist/cli/commands/ticket/resolver.d.ts.map +1 -0
- package/dist/cli/commands/ticket/resolver.js +35 -0
- package/dist/cli/commands/ticket/resolver.js.map +1 -0
- package/dist/cli/commands/ticket/types.d.ts +157 -0
- package/dist/cli/commands/ticket/types.d.ts.map +1 -0
- package/dist/cli/commands/ticket/types.js +8 -0
- package/dist/cli/commands/ticket/types.js.map +1 -0
- package/dist/cli/commands/tickets.d.ts +16 -0
- package/dist/cli/commands/tickets.d.ts.map +1 -0
- package/dist/cli/commands/tickets.js +271 -0
- package/dist/cli/commands/tickets.js.map +1 -0
- package/dist/cli/commands/tickets.types.d.ts +202 -0
- package/dist/cli/commands/tickets.types.d.ts.map +1 -0
- package/dist/cli/commands/tickets.types.js +138 -0
- package/dist/cli/commands/tickets.types.js.map +1 -0
- package/dist/cli/config/index.d.ts +11 -0
- package/dist/cli/config/index.d.ts.map +1 -0
- package/dist/cli/config/index.js +11 -0
- package/dist/cli/config/index.js.map +1 -0
- package/dist/cli/config/loader.d.ts +98 -0
- package/dist/cli/config/loader.d.ts.map +1 -0
- package/dist/cli/config/loader.js +237 -0
- package/dist/cli/config/loader.js.map +1 -0
- package/dist/cli/config/paths.d.ts +96 -0
- package/dist/cli/config/paths.d.ts.map +1 -0
- package/dist/cli/config/paths.js +140 -0
- package/dist/cli/config/paths.js.map +1 -0
- package/dist/cli/config/types.d.ts +148 -0
- package/dist/cli/config/types.d.ts.map +1 -0
- package/dist/cli/config/types.js +34 -0
- package/dist/cli/config/types.js.map +1 -0
- package/dist/cli/config/writer.d.ts +171 -0
- package/dist/cli/config/writer.d.ts.map +1 -0
- package/dist/cli/config/writer.js +312 -0
- package/dist/cli/config/writer.js.map +1 -0
- package/dist/cli/index.d.ts +30 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +183 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/middleware/auth-guard.d.ts +107 -0
- package/dist/cli/middleware/auth-guard.d.ts.map +1 -0
- package/dist/cli/middleware/auth-guard.js +190 -0
- package/dist/cli/middleware/auth-guard.js.map +1 -0
- package/dist/cli/middleware/error-handler.d.ts +133 -0
- package/dist/cli/middleware/error-handler.d.ts.map +1 -0
- package/dist/cli/middleware/error-handler.js +209 -0
- package/dist/cli/middleware/error-handler.js.map +1 -0
- package/dist/cli/middleware/index.d.ts +6 -0
- package/dist/cli/middleware/index.d.ts.map +1 -0
- package/dist/cli/middleware/index.js +6 -0
- package/dist/cli/middleware/index.js.map +1 -0
- package/dist/cli/templates/commands.d.ts +20 -0
- package/dist/cli/templates/commands.d.ts.map +1 -0
- package/dist/cli/templates/commands.js +174 -0
- package/dist/cli/templates/commands.js.map +1 -0
- package/dist/cli/templates/content/sf-autonomous.d.ts +7 -0
- package/dist/cli/templates/content/sf-autonomous.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-autonomous.js +78 -0
- package/dist/cli/templates/content/sf-autonomous.js.map +1 -0
- package/dist/cli/templates/content/sf-blockers.d.ts +7 -0
- package/dist/cli/templates/content/sf-blockers.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-blockers.js +68 -0
- package/dist/cli/templates/content/sf-blockers.js.map +1 -0
- package/dist/cli/templates/content/sf-commit.d.ts +7 -0
- package/dist/cli/templates/content/sf-commit.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-commit.js +78 -0
- package/dist/cli/templates/content/sf-commit.js.map +1 -0
- package/dist/cli/templates/content/sf-context.d.ts +7 -0
- package/dist/cli/templates/content/sf-context.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-context.js +64 -0
- package/dist/cli/templates/content/sf-context.js.map +1 -0
- package/dist/cli/templates/content/sf-create-epics.d.ts +7 -0
- package/dist/cli/templates/content/sf-create-epics.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-create-epics.js +70 -0
- package/dist/cli/templates/content/sf-create-epics.js.map +1 -0
- package/dist/cli/templates/content/sf-create-spec.d.ts +7 -0
- package/dist/cli/templates/content/sf-create-spec.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-create-spec.js +67 -0
- package/dist/cli/templates/content/sf-create-spec.js.map +1 -0
- package/dist/cli/templates/content/sf-create-tickets.d.ts +7 -0
- package/dist/cli/templates/content/sf-create-tickets.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-create-tickets.js +76 -0
- package/dist/cli/templates/content/sf-create-tickets.js.map +1 -0
- package/dist/cli/templates/content/sf-epic.d.ts +7 -0
- package/dist/cli/templates/content/sf-epic.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-epic.js +69 -0
- package/dist/cli/templates/content/sf-epic.js.map +1 -0
- package/dist/cli/templates/content/sf-help.d.ts +7 -0
- package/dist/cli/templates/content/sf-help.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-help.js +61 -0
- package/dist/cli/templates/content/sf-help.js.map +1 -0
- package/dist/cli/templates/content/sf-import.d.ts +7 -0
- package/dist/cli/templates/content/sf-import.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-import.js +88 -0
- package/dist/cli/templates/content/sf-import.js.map +1 -0
- package/dist/cli/templates/content/sf-init.d.ts +7 -0
- package/dist/cli/templates/content/sf-init.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-init.js +61 -0
- package/dist/cli/templates/content/sf-init.js.map +1 -0
- package/dist/cli/templates/content/sf-next.d.ts +7 -0
- package/dist/cli/templates/content/sf-next.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-next.js +67 -0
- package/dist/cli/templates/content/sf-next.js.map +1 -0
- package/dist/cli/templates/content/sf-reset.d.ts +7 -0
- package/dist/cli/templates/content/sf-reset.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-reset.js +78 -0
- package/dist/cli/templates/content/sf-reset.js.map +1 -0
- package/dist/cli/templates/content/sf-review.d.ts +7 -0
- package/dist/cli/templates/content/sf-review.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-review.js +67 -0
- package/dist/cli/templates/content/sf-review.js.map +1 -0
- package/dist/cli/templates/content/sf-search.d.ts +7 -0
- package/dist/cli/templates/content/sf-search.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-search.js +64 -0
- package/dist/cli/templates/content/sf-search.js.map +1 -0
- package/dist/cli/templates/content/sf-status.d.ts +7 -0
- package/dist/cli/templates/content/sf-status.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-status.js +67 -0
- package/dist/cli/templates/content/sf-status.js.map +1 -0
- package/dist/cli/templates/content/sf-ticket.d.ts +7 -0
- package/dist/cli/templates/content/sf-ticket.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-ticket.js +76 -0
- package/dist/cli/templates/content/sf-ticket.js.map +1 -0
- package/dist/cli/templates/content/sf-validate.d.ts +7 -0
- package/dist/cli/templates/content/sf-validate.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-validate.js +78 -0
- package/dist/cli/templates/content/sf-validate.js.map +1 -0
- package/dist/cli/templates/index.d.ts +7 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +7 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/ui/colors.d.ts +76 -0
- package/dist/cli/ui/colors.d.ts.map +1 -0
- package/dist/cli/ui/colors.js +81 -0
- package/dist/cli/ui/colors.js.map +1 -0
- package/dist/cli/ui/dashboard.d.ts +54 -0
- package/dist/cli/ui/dashboard.d.ts.map +1 -0
- package/dist/cli/ui/dashboard.js +339 -0
- package/dist/cli/ui/dashboard.js.map +1 -0
- package/dist/cli/ui/index.d.ts +7 -0
- package/dist/cli/ui/index.d.ts.map +1 -0
- package/dist/cli/ui/index.js +7 -0
- package/dist/cli/ui/index.js.map +1 -0
- package/dist/cli/ui/output.d.ts +117 -0
- package/dist/cli/ui/output.d.ts.map +1 -0
- package/dist/cli/ui/output.js +172 -0
- package/dist/cli/ui/output.js.map +1 -0
- package/dist/cli/ui/spinner.d.ts +105 -0
- package/dist/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cli/ui/spinner.js +148 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/time.d.ts +54 -0
- package/dist/cli/ui/time.d.ts.map +1 -0
- package/dist/cli/ui/time.js +173 -0
- package/dist/cli/ui/time.js.map +1 -0
- package/dist/lib/format.d.ts +4 -4
- package/dist/lib/format.js +5 -5
- package/dist/server.js +8 -8
- package/dist/server.js.map +1 -1
- package/dist/tools/core/session.js +6 -6
- package/dist/tools/core/session.js.map +1 -1
- package/dist/tools/index.js +9 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/index.js.map +1 -1
- package/package.json +9 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/commands/review/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoMH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB,EAAE,qBAAqB;IAC1C,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACN,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AAEvF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,eAAe,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAuB;IACjD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,SAAiB;IAC3D,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACtD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACtD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACxD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAsB;IAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,IAAY,EACZ,MAAmB,EACnB,OAAe,EACf,OAA4C;IAE5C,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,MAAM;QACN,OAAO;QACP,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,GAAG,EAAE,OAAO,EAAE,GAAG;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Display Functions
|
|
3
|
+
*
|
|
4
|
+
* Display functions for consistent output formatting.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandTemplate, ScaffoldResult, ScaffoldTarget } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Display list of available commands
|
|
9
|
+
*/
|
|
10
|
+
export declare function displayCommandList(templates: CommandTemplate[]): void;
|
|
11
|
+
/**
|
|
12
|
+
* Display scaffolding header
|
|
13
|
+
*/
|
|
14
|
+
export declare function displayScaffoldHeader(target: ScaffoldTarget, targetPath: string, dryRun: boolean): void;
|
|
15
|
+
/**
|
|
16
|
+
* Display file operation result
|
|
17
|
+
*/
|
|
18
|
+
export declare function displayFileOperation(filename: string, exists: boolean, dryRun: boolean, updating: boolean): void;
|
|
19
|
+
/**
|
|
20
|
+
* Display scaffolding summary
|
|
21
|
+
*/
|
|
22
|
+
export declare function displayScaffoldSummary(result: ScaffoldResult, target: ScaffoldTarget, dryRun: boolean): void;
|
|
23
|
+
/**
|
|
24
|
+
* Display error for unknown target
|
|
25
|
+
*/
|
|
26
|
+
export declare function displayTargetError(target: string, validTargets: string[]): void;
|
|
27
|
+
//# sourceMappingURL=display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIlF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAgBrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GACd,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,GAChB,IAAI,CAcN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO,GACd,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAG/E"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Display Functions
|
|
3
|
+
*
|
|
4
|
+
* Display functions for consistent output formatting.
|
|
5
|
+
*/
|
|
6
|
+
import { colors } from '../../ui/colors.js';
|
|
7
|
+
import { COMMAND_CATEGORIES } from './types.js';
|
|
8
|
+
import { TARGETS } from './targets.js';
|
|
9
|
+
/**
|
|
10
|
+
* Display list of available commands
|
|
11
|
+
*/
|
|
12
|
+
export function displayCommandList(templates) {
|
|
13
|
+
console.log(colors.bold('\nAvailable SpecForge Commands'));
|
|
14
|
+
console.log('═══════════════════════════════\n');
|
|
15
|
+
for (const [category, commandNames] of Object.entries(COMMAND_CATEGORIES)) {
|
|
16
|
+
console.log(colors.bold(category));
|
|
17
|
+
for (const name of commandNames) {
|
|
18
|
+
const template = templates.find(t => t.name === name);
|
|
19
|
+
if (template) {
|
|
20
|
+
console.log(` ${colors.primary(name.padEnd(25))} ${colors.dim(template.description)}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
console.log();
|
|
24
|
+
}
|
|
25
|
+
console.log(colors.dim(`Total: ${templates.length} commands\n`));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Display scaffolding header
|
|
29
|
+
*/
|
|
30
|
+
export function displayScaffoldHeader(target, targetPath, dryRun) {
|
|
31
|
+
const config = TARGETS[target];
|
|
32
|
+
console.log(colors.bold(`\nScaffolding SpecForge commands for ${config.name}`));
|
|
33
|
+
console.log(`Target: ${colors.primary(targetPath)}\n`);
|
|
34
|
+
if (dryRun) {
|
|
35
|
+
console.log(colors.warning('DRY RUN - No files will be written\n'));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Display file operation result
|
|
40
|
+
*/
|
|
41
|
+
export function displayFileOperation(filename, exists, dryRun, updating) {
|
|
42
|
+
if (exists && !updating) {
|
|
43
|
+
console.log(colors.dim(` ○ ${filename} (exists, skipping)`));
|
|
44
|
+
}
|
|
45
|
+
else if (dryRun) {
|
|
46
|
+
console.log(exists
|
|
47
|
+
? colors.secondary(` ↻ ${filename} (would update)`)
|
|
48
|
+
: colors.success(` + ${filename} (would create)`));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(exists
|
|
52
|
+
? colors.secondary(` ↻ ${filename} (updated)`)
|
|
53
|
+
: colors.success(` + ${filename} (created)`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Display scaffolding summary
|
|
58
|
+
*/
|
|
59
|
+
export function displayScaffoldSummary(result, target, dryRun) {
|
|
60
|
+
const config = TARGETS[target];
|
|
61
|
+
console.log();
|
|
62
|
+
if (!dryRun) {
|
|
63
|
+
if (result.created > 0) {
|
|
64
|
+
console.log(colors.success(`✓ Created ${result.created} commands`));
|
|
65
|
+
}
|
|
66
|
+
if (result.updated > 0) {
|
|
67
|
+
console.log(colors.secondary(`✓ Updated ${result.updated} commands`));
|
|
68
|
+
}
|
|
69
|
+
if (result.skipped > 0) {
|
|
70
|
+
console.log(colors.dim(`○ Skipped ${result.skipped} existing commands`));
|
|
71
|
+
}
|
|
72
|
+
console.log(colors.bold(`\n${config.name} commands ready!`));
|
|
73
|
+
// Show usage hint
|
|
74
|
+
if (config.usageHint) {
|
|
75
|
+
console.log(colors.dim(`\n${config.usageHint}`));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log(colors.warning(`Would create ${result.created}, update ${result.updated}, skip ${result.skipped}`));
|
|
80
|
+
}
|
|
81
|
+
console.log();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Display error for unknown target
|
|
85
|
+
*/
|
|
86
|
+
export function displayTargetError(target, validTargets) {
|
|
87
|
+
console.error(colors.error(`\nError: Unknown target "${target}"`));
|
|
88
|
+
console.error(`Available targets: ${validTargets.join(', ')}`);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/display.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all scaffold command types and utilities.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './targets.js';
|
|
8
|
+
export * from './utils.js';
|
|
9
|
+
export * from './display.js';
|
|
10
|
+
export { scaffoldCommand } from './scaffold.js';
|
|
11
|
+
export { registerScaffoldCommand } from './register.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all scaffold command types and utilities.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './targets.js';
|
|
8
|
+
export * from './utils.js';
|
|
9
|
+
export * from './display.js';
|
|
10
|
+
export { scaffoldCommand } from './scaffold.js';
|
|
11
|
+
export { registerScaffoldCommand } from './register.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Registration
|
|
3
|
+
*
|
|
4
|
+
* Registers the scaffold command with the CLI framework.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Register scaffold command with the CLI
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerScaffoldCommand(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa9D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Registration
|
|
3
|
+
*
|
|
4
|
+
* Registers the scaffold command with the CLI framework.
|
|
5
|
+
*/
|
|
6
|
+
import { scaffoldCommand } from './scaffold.js';
|
|
7
|
+
import { withErrorHandler } from '../../middleware/error-handler.js';
|
|
8
|
+
/**
|
|
9
|
+
* Register scaffold command with the CLI
|
|
10
|
+
*/
|
|
11
|
+
export function registerScaffoldCommand(program) {
|
|
12
|
+
program
|
|
13
|
+
.command('scaffold')
|
|
14
|
+
.description('Generate SpecForge commands for AI CLI tools')
|
|
15
|
+
.option('--target <tool>', 'Target AI CLI (claude, copilot, codex, gemini, opencode)')
|
|
16
|
+
.option('--global', 'Install to global location (default)', true)
|
|
17
|
+
.option('--project', 'Install to project .specforge/')
|
|
18
|
+
.option('--list', 'List available commands')
|
|
19
|
+
.option('--update', 'Update existing commands')
|
|
20
|
+
.option('--dry-run', 'Show what would be created')
|
|
21
|
+
.action(withErrorHandler(async (options) => {
|
|
22
|
+
await scaffoldCommand(options);
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC;SACrF,MAAM,CAAC,UAAU,EAAE,sCAAsC,EAAE,IAAI,CAAC;SAChE,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;SAC3C,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;SACjD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE;QAC1D,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main scaffold command that generates SpecForge commands for AI CLI tools.
|
|
5
|
+
*/
|
|
6
|
+
import type { ScaffoldOptions } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Scaffold command implementation
|
|
9
|
+
*/
|
|
10
|
+
export declare function scaffoldCommand(options: ScaffoldOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,YAAY,CAAC;AAgHpB;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main scaffold command that generates SpecForge commands for AI CLI tools.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { TARGETS, isValidTarget, getSupportedTargets, getTargetPath } from './targets.js';
|
|
8
|
+
import { getCommandTemplates } from '../../templates/commands.js';
|
|
9
|
+
import { detectInstalledTools, generateCommandContent, ensureDirectory, fileExists, writeFile, getCommandFilename, } from './utils.js';
|
|
10
|
+
import { displayCommandList, displayScaffoldHeader, displayFileOperation, displayScaffoldSummary, displayTargetError, } from './display.js';
|
|
11
|
+
import { colors } from '../../ui/colors.js';
|
|
12
|
+
/**
|
|
13
|
+
* Interactive target selection
|
|
14
|
+
*/
|
|
15
|
+
async function selectTarget() {
|
|
16
|
+
const installed = detectInstalledTools();
|
|
17
|
+
const inquirer = await import('inquirer');
|
|
18
|
+
const choices = Object.entries(TARGETS).map(([key, config]) => ({
|
|
19
|
+
name: `${config.name}${installed.includes(key) ? colors.success(' (detected)') : ''}`,
|
|
20
|
+
value: key,
|
|
21
|
+
}));
|
|
22
|
+
const { target } = await inquirer.default.prompt([
|
|
23
|
+
{
|
|
24
|
+
type: 'list',
|
|
25
|
+
name: 'target',
|
|
26
|
+
message: 'Select target AI CLI tool:',
|
|
27
|
+
choices,
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
return target;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Scaffold commands for a target
|
|
34
|
+
*/
|
|
35
|
+
async function scaffoldCommands(target, options) {
|
|
36
|
+
const config = TARGETS[target];
|
|
37
|
+
const isProject = options.project === true;
|
|
38
|
+
const targetPath = getTargetPath(target, isProject);
|
|
39
|
+
const templates = getCommandTemplates();
|
|
40
|
+
// Display header
|
|
41
|
+
displayScaffoldHeader(target, targetPath, options.dryRun === true);
|
|
42
|
+
// Create directory if needed
|
|
43
|
+
if (!options.dryRun) {
|
|
44
|
+
ensureDirectory(targetPath);
|
|
45
|
+
}
|
|
46
|
+
// Track results
|
|
47
|
+
const result = {
|
|
48
|
+
created: 0,
|
|
49
|
+
updated: 0,
|
|
50
|
+
skipped: 0,
|
|
51
|
+
targetPath,
|
|
52
|
+
};
|
|
53
|
+
// Process each template
|
|
54
|
+
for (const template of templates) {
|
|
55
|
+
const filename = getCommandFilename(template.name, config.fileExtension);
|
|
56
|
+
const filepath = path.join(targetPath, filename);
|
|
57
|
+
const exists = fileExists(filepath);
|
|
58
|
+
// Skip existing files unless updating
|
|
59
|
+
if (exists && !options.update) {
|
|
60
|
+
displayFileOperation(filename, true, false, false);
|
|
61
|
+
result.skipped++;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Generate content
|
|
65
|
+
const content = generateCommandContent(template, config.needsFrontmatter, target);
|
|
66
|
+
// Display operation
|
|
67
|
+
displayFileOperation(filename, exists, options.dryRun === true, options.update === true);
|
|
68
|
+
// Write file if not dry run
|
|
69
|
+
if (!options.dryRun) {
|
|
70
|
+
writeFile(filepath, content);
|
|
71
|
+
}
|
|
72
|
+
// Update counts
|
|
73
|
+
if (exists) {
|
|
74
|
+
result.updated++;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
result.created++;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Display summary
|
|
81
|
+
displayScaffoldSummary(result, target, options.dryRun === true);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Scaffold command implementation
|
|
85
|
+
*/
|
|
86
|
+
export async function scaffoldCommand(options) {
|
|
87
|
+
// List mode
|
|
88
|
+
if (options.list) {
|
|
89
|
+
const templates = getCommandTemplates();
|
|
90
|
+
displayCommandList(templates);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Determine target
|
|
94
|
+
let target;
|
|
95
|
+
if (options.target) {
|
|
96
|
+
// Validate provided target
|
|
97
|
+
if (!isValidTarget(options.target)) {
|
|
98
|
+
displayTargetError(options.target, getSupportedTargets());
|
|
99
|
+
process.exit(1);
|
|
100
|
+
return; // For testing when exit is mocked
|
|
101
|
+
}
|
|
102
|
+
target = options.target;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Interactive selection
|
|
106
|
+
target = await selectTarget();
|
|
107
|
+
}
|
|
108
|
+
// Scaffold commands
|
|
109
|
+
await scaffoldCommands(target, options);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target Configurations Module
|
|
3
|
+
*
|
|
4
|
+
* Defines paths and settings for each supported AI CLI tool.
|
|
5
|
+
*/
|
|
6
|
+
import type { TargetConfig, TargetConfigMap, ScaffoldTarget } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for all supported AI CLI targets
|
|
9
|
+
*/
|
|
10
|
+
export declare const TARGETS: TargetConfigMap;
|
|
11
|
+
/**
|
|
12
|
+
* Get all supported target names
|
|
13
|
+
*/
|
|
14
|
+
export declare function getSupportedTargets(): ScaffoldTarget[];
|
|
15
|
+
/**
|
|
16
|
+
* Get target configuration by name
|
|
17
|
+
*/
|
|
18
|
+
export declare function getTargetConfig(target: string): TargetConfig | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a target is valid
|
|
21
|
+
*/
|
|
22
|
+
export declare function isValidTarget(target: string): target is ScaffoldTarget;
|
|
23
|
+
/**
|
|
24
|
+
* Get the installation path for a target
|
|
25
|
+
*/
|
|
26
|
+
export declare function getTargetPath(target: ScaffoldTarget, isProject: boolean): string;
|
|
27
|
+
/**
|
|
28
|
+
* Format target list for error messages
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatTargetList(): string;
|
|
31
|
+
//# sourceMappingURL=targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/targets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,eAyCrB,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc,CAEtE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAGhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target Configurations Module
|
|
3
|
+
*
|
|
4
|
+
* Defines paths and settings for each supported AI CLI tool.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import os from 'os';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for all supported AI CLI targets
|
|
10
|
+
*/
|
|
11
|
+
export const TARGETS = {
|
|
12
|
+
claude: {
|
|
13
|
+
name: 'Claude Code',
|
|
14
|
+
globalPath: () => path.join(os.homedir(), '.claude', 'commands'),
|
|
15
|
+
projectPath: () => path.join(process.cwd(), '.specforge', 'commands'),
|
|
16
|
+
fileExtension: '.md',
|
|
17
|
+
needsFrontmatter: true,
|
|
18
|
+
usageHint: 'Type /sf- in Claude Code to see available commands',
|
|
19
|
+
},
|
|
20
|
+
copilot: {
|
|
21
|
+
name: 'GitHub Copilot CLI',
|
|
22
|
+
globalPath: () => path.join(os.homedir(), '.config', 'gh-copilot', 'skills'),
|
|
23
|
+
projectPath: () => path.join(process.cwd(), '.specforge', 'skills'),
|
|
24
|
+
fileExtension: '.md',
|
|
25
|
+
needsFrontmatter: false,
|
|
26
|
+
usageHint: 'Use @specforge in Copilot CLI to access commands',
|
|
27
|
+
},
|
|
28
|
+
codex: {
|
|
29
|
+
name: 'Codex CLI',
|
|
30
|
+
globalPath: () => path.join(os.homedir(), '.codex', 'prompts'),
|
|
31
|
+
projectPath: () => path.join(process.cwd(), '.specforge', 'prompts'),
|
|
32
|
+
fileExtension: '.md',
|
|
33
|
+
needsFrontmatter: false,
|
|
34
|
+
usageHint: 'Use /sf- prefix in Codex CLI',
|
|
35
|
+
},
|
|
36
|
+
gemini: {
|
|
37
|
+
name: 'Gemini CLI',
|
|
38
|
+
globalPath: () => path.join(os.homedir(), '.config', 'gemini-cli', 'commands'),
|
|
39
|
+
projectPath: () => path.join(process.cwd(), '.specforge', 'gemini'),
|
|
40
|
+
fileExtension: '.md',
|
|
41
|
+
needsFrontmatter: false,
|
|
42
|
+
usageHint: 'Use /sf- prefix in Gemini CLI',
|
|
43
|
+
},
|
|
44
|
+
opencode: {
|
|
45
|
+
name: 'OpenCode',
|
|
46
|
+
globalPath: () => path.join(os.homedir(), '.opencode', 'commands'),
|
|
47
|
+
projectPath: () => path.join(process.cwd(), '.specforge', 'opencode'),
|
|
48
|
+
fileExtension: '.md',
|
|
49
|
+
needsFrontmatter: false,
|
|
50
|
+
usageHint: 'Use /sf- prefix in OpenCode',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Get all supported target names
|
|
55
|
+
*/
|
|
56
|
+
export function getSupportedTargets() {
|
|
57
|
+
return Object.keys(TARGETS);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get target configuration by name
|
|
61
|
+
*/
|
|
62
|
+
export function getTargetConfig(target) {
|
|
63
|
+
return TARGETS[target];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if a target is valid
|
|
67
|
+
*/
|
|
68
|
+
export function isValidTarget(target) {
|
|
69
|
+
return target in TARGETS;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the installation path for a target
|
|
73
|
+
*/
|
|
74
|
+
export function getTargetPath(target, isProject) {
|
|
75
|
+
const config = TARGETS[target];
|
|
76
|
+
return isProject ? config.projectPath() : config.globalPath();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Format target list for error messages
|
|
80
|
+
*/
|
|
81
|
+
export function formatTargetList() {
|
|
82
|
+
return getSupportedTargets().join(', ');
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Types & Interfaces
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the scaffold command that generates AI CLI tool commands.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Options for the scaffold command
|
|
8
|
+
*/
|
|
9
|
+
export interface ScaffoldOptions {
|
|
10
|
+
/** Target AI CLI tool (claude, copilot, codex, gemini, opencode) */
|
|
11
|
+
target?: string;
|
|
12
|
+
/** Install to global location (default) */
|
|
13
|
+
global?: boolean;
|
|
14
|
+
/** Install to project .specforge/ */
|
|
15
|
+
project?: boolean;
|
|
16
|
+
/** List available commands */
|
|
17
|
+
list?: boolean;
|
|
18
|
+
/** Update existing commands to latest version */
|
|
19
|
+
update?: boolean;
|
|
20
|
+
/** Show what would be created without writing */
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Supported AI CLI targets
|
|
25
|
+
*/
|
|
26
|
+
export type ScaffoldTarget = 'claude' | 'copilot' | 'codex' | 'gemini' | 'opencode';
|
|
27
|
+
/**
|
|
28
|
+
* Configuration for a target AI CLI tool
|
|
29
|
+
*/
|
|
30
|
+
export interface TargetConfig {
|
|
31
|
+
/** Display name of the AI CLI tool */
|
|
32
|
+
name: string;
|
|
33
|
+
/** Function to get global installation path */
|
|
34
|
+
globalPath: () => string;
|
|
35
|
+
/** Function to get project installation path */
|
|
36
|
+
projectPath: () => string;
|
|
37
|
+
/** File extension for command files */
|
|
38
|
+
fileExtension: string;
|
|
39
|
+
/** Whether the target uses YAML frontmatter */
|
|
40
|
+
needsFrontmatter: boolean;
|
|
41
|
+
/** Usage hint for after scaffolding */
|
|
42
|
+
usageHint?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Map of all target configurations
|
|
46
|
+
*/
|
|
47
|
+
export type TargetConfigMap = Record<ScaffoldTarget, TargetConfig>;
|
|
48
|
+
/**
|
|
49
|
+
* Command template definition
|
|
50
|
+
*/
|
|
51
|
+
export interface CommandTemplate {
|
|
52
|
+
/** Command name (e.g., 'sf-init') */
|
|
53
|
+
name: string;
|
|
54
|
+
/** Short description for command list */
|
|
55
|
+
description: string;
|
|
56
|
+
/** Argument hint for frontmatter (e.g., '[specification-id]') */
|
|
57
|
+
argumentHint?: string;
|
|
58
|
+
/** Full markdown content of the command */
|
|
59
|
+
content: string;
|
|
60
|
+
/** Command category for grouping */
|
|
61
|
+
category: CommandCategory;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Command categories for organization
|
|
65
|
+
*/
|
|
66
|
+
export type CommandCategory = 'Setup' | 'Status' | 'Implementation' | 'Planning' | 'Review' | 'Utilities';
|
|
67
|
+
/**
|
|
68
|
+
* Scaffolding result statistics
|
|
69
|
+
*/
|
|
70
|
+
export interface ScaffoldResult {
|
|
71
|
+
/** Number of files created */
|
|
72
|
+
created: number;
|
|
73
|
+
/** Number of files updated */
|
|
74
|
+
updated: number;
|
|
75
|
+
/** Number of files skipped */
|
|
76
|
+
skipped: number;
|
|
77
|
+
/** Target path where files were written */
|
|
78
|
+
targetPath: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Category to commands mapping for display
|
|
82
|
+
*/
|
|
83
|
+
export declare const COMMAND_CATEGORIES: Record<CommandCategory, string[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Version string for generated commands
|
|
86
|
+
*/
|
|
87
|
+
export declare const SCAFFOLD_VERSION = "1.0.0";
|
|
88
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,gDAAgD;IAChD,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,QAAQ,GACR,gBAAgB,GAChB,UAAU,GACV,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAOhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Command Types & Interfaces
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the scaffold command that generates AI CLI tool commands.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Category to commands mapping for display
|
|
8
|
+
*/
|
|
9
|
+
export const COMMAND_CATEGORIES = {
|
|
10
|
+
'Setup': ['sf-init', 'sf-context'],
|
|
11
|
+
'Status': ['sf-status', 'sf-validate', 'sf-analyze-blockers'],
|
|
12
|
+
'Implementation': ['sf-next', 'sf-ticket-implementation', 'sf-run-autonomous'],
|
|
13
|
+
'Planning': ['sf-import-plan', 'sf-create-spec', 'sf-create-epics', 'sf-create-tickets'],
|
|
14
|
+
'Review': ['sf-review', 'sf-search', 'sf-epic'],
|
|
15
|
+
'Utilities': ['sf-reset', 'sf-commit', 'sf-help'],
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Version string for generated commands
|
|
19
|
+
*/
|
|
20
|
+
export const SCAFFOLD_VERSION = '1.0.0';
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyFH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;IAClC,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,CAAC;IAC7D,gBAAgB,EAAE,CAAC,SAAS,EAAE,0BAA0B,EAAE,mBAAmB,CAAC;IAC9E,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;IACxF,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;IAC/C,WAAW,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Utility functions for file operations and content generation.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandTemplate, ScaffoldTarget } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Detect which AI CLI tools are installed
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectInstalledTools(): ScaffoldTarget[];
|
|
11
|
+
/**
|
|
12
|
+
* Generate command content for a target format
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateCommandContent(template: CommandTemplate, needsFrontmatter: boolean, target: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Ensure directory exists
|
|
17
|
+
*/
|
|
18
|
+
export declare function ensureDirectory(dirPath: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Check if file exists
|
|
21
|
+
*/
|
|
22
|
+
export declare function fileExists(filePath: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Write content to file
|
|
25
|
+
*/
|
|
26
|
+
export declare function writeFile(filePath: string, content: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get command filename
|
|
29
|
+
*/
|
|
30
|
+
export declare function getCommandFilename(commandName: string, extension: string): string;
|
|
31
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/scaffold/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIlE;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,EAAE,CAWvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,MAAM,EAAE,MAAM,GACb,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
|