@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,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next & Blocked Commands Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the next and blocked commands.
|
|
5
|
+
*/
|
|
6
|
+
import { TicketStatus, TicketPriority } from './tickets.types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Next command options from Commander
|
|
9
|
+
*/
|
|
10
|
+
export interface NextOptions {
|
|
11
|
+
/** Output as JSON */
|
|
12
|
+
json?: boolean;
|
|
13
|
+
/** Output as TOON format */
|
|
14
|
+
toon?: boolean;
|
|
15
|
+
/** Show only title and ID */
|
|
16
|
+
brief?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Blocked command options from Commander
|
|
20
|
+
*/
|
|
21
|
+
export interface BlockedOptions {
|
|
22
|
+
/** Output as JSON */
|
|
23
|
+
json?: boolean;
|
|
24
|
+
/** Output as TOON format */
|
|
25
|
+
toon?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Dependency information for a ticket
|
|
29
|
+
*/
|
|
30
|
+
export interface TicketDependency {
|
|
31
|
+
/** Dependency ticket ID */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Dependency ticket number */
|
|
34
|
+
ticketNumber: number;
|
|
35
|
+
/** Dependency ticket title */
|
|
36
|
+
title: string;
|
|
37
|
+
/** Dependency ticket status */
|
|
38
|
+
status: TicketStatus;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Full ticket details for next command
|
|
42
|
+
*/
|
|
43
|
+
export interface NextTicket {
|
|
44
|
+
/** Ticket ID */
|
|
45
|
+
id: string;
|
|
46
|
+
/** Sequential ticket number */
|
|
47
|
+
ticketNumber: number;
|
|
48
|
+
/** Ticket title */
|
|
49
|
+
title: string;
|
|
50
|
+
/** Ticket description */
|
|
51
|
+
description?: string;
|
|
52
|
+
/** Ticket priority */
|
|
53
|
+
priority: TicketPriority;
|
|
54
|
+
/** Ticket complexity */
|
|
55
|
+
complexity?: TicketComplexity;
|
|
56
|
+
/** Estimated hours to complete */
|
|
57
|
+
estimatedHours?: number;
|
|
58
|
+
/** List of acceptance criteria */
|
|
59
|
+
acceptanceCriteria?: string[];
|
|
60
|
+
/** Dependencies (all should be satisfied) */
|
|
61
|
+
dependencies?: TicketDependency[];
|
|
62
|
+
/** Epic ID this ticket belongs to */
|
|
63
|
+
epicId?: string;
|
|
64
|
+
/** Epic title */
|
|
65
|
+
epicTitle?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Ticket complexity levels
|
|
69
|
+
*/
|
|
70
|
+
export type TicketComplexity = 'trivial' | 'low' | 'medium' | 'high' | 'complex';
|
|
71
|
+
/**
|
|
72
|
+
* All valid complexity levels
|
|
73
|
+
*/
|
|
74
|
+
export declare const VALID_COMPLEXITIES: TicketComplexity[];
|
|
75
|
+
/**
|
|
76
|
+
* Blocker ticket information
|
|
77
|
+
*/
|
|
78
|
+
export interface BlockerTicket {
|
|
79
|
+
/** Blocker ticket ID */
|
|
80
|
+
id: string;
|
|
81
|
+
/** Blocker ticket number */
|
|
82
|
+
ticketNumber: number;
|
|
83
|
+
/** Blocker ticket title */
|
|
84
|
+
title: string;
|
|
85
|
+
/** Blocker ticket status */
|
|
86
|
+
status: TicketStatus;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Blocked ticket with its blockers
|
|
90
|
+
*/
|
|
91
|
+
export interface BlockedTicket {
|
|
92
|
+
/** Blocked ticket ID */
|
|
93
|
+
id: string;
|
|
94
|
+
/** Blocked ticket number */
|
|
95
|
+
ticketNumber: number;
|
|
96
|
+
/** Blocked ticket title */
|
|
97
|
+
title: string;
|
|
98
|
+
/** List of blocking tickets */
|
|
99
|
+
blockedBy: BlockerTicket[];
|
|
100
|
+
/** Reason for block (if manually set) */
|
|
101
|
+
blockReason?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* API response for get_ticket
|
|
105
|
+
*/
|
|
106
|
+
export interface GetTicketApiResponse {
|
|
107
|
+
/** Ticket ID */
|
|
108
|
+
id: string;
|
|
109
|
+
/** Ticket number */
|
|
110
|
+
ticketNumber: number;
|
|
111
|
+
/** Ticket title */
|
|
112
|
+
title: string;
|
|
113
|
+
/** Ticket description */
|
|
114
|
+
description?: string;
|
|
115
|
+
/** Ticket priority */
|
|
116
|
+
priority: TicketPriority;
|
|
117
|
+
/** Ticket status */
|
|
118
|
+
status: TicketStatus;
|
|
119
|
+
/** Ticket complexity */
|
|
120
|
+
complexity?: TicketComplexity;
|
|
121
|
+
/** Estimated hours */
|
|
122
|
+
estimatedHours?: number;
|
|
123
|
+
/** Acceptance criteria */
|
|
124
|
+
acceptanceCriteria?: string[];
|
|
125
|
+
/** Blocking ticket IDs */
|
|
126
|
+
blockedBy?: string[];
|
|
127
|
+
/** Block reason */
|
|
128
|
+
blockReason?: string;
|
|
129
|
+
/** Epic ID */
|
|
130
|
+
epicId?: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Complexity display colors
|
|
134
|
+
*/
|
|
135
|
+
export declare const COMPLEXITY_COLORS: Record<TicketComplexity, string>;
|
|
136
|
+
/**
|
|
137
|
+
* Ticket card display width
|
|
138
|
+
*/
|
|
139
|
+
export declare const TICKET_CARD_WIDTH = 65;
|
|
140
|
+
/**
|
|
141
|
+
* Format ticket number with prefix
|
|
142
|
+
*
|
|
143
|
+
* @param num Ticket number
|
|
144
|
+
* @returns Formatted ticket number (e.g., "TKT-042")
|
|
145
|
+
*/
|
|
146
|
+
export declare function formatTicketId(num: number): string;
|
|
147
|
+
/**
|
|
148
|
+
* Wrap text to specified width
|
|
149
|
+
*
|
|
150
|
+
* @param text Text to wrap
|
|
151
|
+
* @param width Maximum line width
|
|
152
|
+
* @returns Array of wrapped lines
|
|
153
|
+
*/
|
|
154
|
+
export declare function wrapText(text: string, width: number): string[];
|
|
155
|
+
/**
|
|
156
|
+
* Truncate text with ellipsis
|
|
157
|
+
*
|
|
158
|
+
* @param text Text to truncate
|
|
159
|
+
* @param maxLength Maximum length
|
|
160
|
+
* @returns Truncated text
|
|
161
|
+
*/
|
|
162
|
+
export declare function truncateText(text: string, maxLength: number): string;
|
|
163
|
+
/**
|
|
164
|
+
* Check if all dependencies are satisfied (done)
|
|
165
|
+
*
|
|
166
|
+
* @param dependencies Array of dependencies
|
|
167
|
+
* @returns True if all dependencies are done or no dependencies
|
|
168
|
+
*/
|
|
169
|
+
export declare function areDependenciesSatisfied(dependencies?: TicketDependency[]): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Count unsatisfied dependencies
|
|
172
|
+
*
|
|
173
|
+
* @param dependencies Array of dependencies
|
|
174
|
+
* @returns Number of dependencies not done
|
|
175
|
+
*/
|
|
176
|
+
export declare function countUnsatisfiedDependencies(dependencies?: TicketDependency[]): number;
|
|
177
|
+
/**
|
|
178
|
+
* Format dependencies status for display
|
|
179
|
+
*
|
|
180
|
+
* @param dependencies Array of dependencies
|
|
181
|
+
* @returns Status string (e.g., "all satisfied", "2 pending")
|
|
182
|
+
*/
|
|
183
|
+
export declare function formatDependenciesStatus(dependencies?: TicketDependency[]): string;
|
|
184
|
+
/**
|
|
185
|
+
* Build tree prefix for blocker display
|
|
186
|
+
*
|
|
187
|
+
* @param isLast Whether this is the last item
|
|
188
|
+
* @returns Tree prefix string
|
|
189
|
+
*/
|
|
190
|
+
export declare function getTreePrefix(isLast: boolean): string;
|
|
191
|
+
//# sourceMappingURL=next.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/next.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next & Blocked Commands Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the next and blocked commands.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* All valid complexity levels
|
|
8
|
+
*/
|
|
9
|
+
export const VALID_COMPLEXITIES = [
|
|
10
|
+
'trivial',
|
|
11
|
+
'low',
|
|
12
|
+
'medium',
|
|
13
|
+
'high',
|
|
14
|
+
'complex',
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Complexity display colors
|
|
18
|
+
*/
|
|
19
|
+
export const COMPLEXITY_COLORS = {
|
|
20
|
+
trivial: 'dim',
|
|
21
|
+
low: 'green',
|
|
22
|
+
medium: 'blue',
|
|
23
|
+
high: 'yellow',
|
|
24
|
+
complex: 'red',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Ticket card display width
|
|
28
|
+
*/
|
|
29
|
+
export const TICKET_CARD_WIDTH = 65;
|
|
30
|
+
/**
|
|
31
|
+
* Format ticket number with prefix
|
|
32
|
+
*
|
|
33
|
+
* @param num Ticket number
|
|
34
|
+
* @returns Formatted ticket number (e.g., "TKT-042")
|
|
35
|
+
*/
|
|
36
|
+
export function formatTicketId(num) {
|
|
37
|
+
return `TKT-${num.toString().padStart(3, '0')}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Wrap text to specified width
|
|
41
|
+
*
|
|
42
|
+
* @param text Text to wrap
|
|
43
|
+
* @param width Maximum line width
|
|
44
|
+
* @returns Array of wrapped lines
|
|
45
|
+
*/
|
|
46
|
+
export function wrapText(text, width) {
|
|
47
|
+
const words = text.split(' ');
|
|
48
|
+
const lines = [];
|
|
49
|
+
let currentLine = '';
|
|
50
|
+
for (const word of words) {
|
|
51
|
+
const testLine = currentLine ? `${currentLine} ${word}` : word;
|
|
52
|
+
if (testLine.length <= width) {
|
|
53
|
+
currentLine = testLine;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
if (currentLine) {
|
|
57
|
+
lines.push(currentLine);
|
|
58
|
+
}
|
|
59
|
+
currentLine = word;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (currentLine) {
|
|
63
|
+
lines.push(currentLine);
|
|
64
|
+
}
|
|
65
|
+
return lines.length > 0 ? lines : [''];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Truncate text with ellipsis
|
|
69
|
+
*
|
|
70
|
+
* @param text Text to truncate
|
|
71
|
+
* @param maxLength Maximum length
|
|
72
|
+
* @returns Truncated text
|
|
73
|
+
*/
|
|
74
|
+
export function truncateText(text, maxLength) {
|
|
75
|
+
if (text.length <= maxLength) {
|
|
76
|
+
return text;
|
|
77
|
+
}
|
|
78
|
+
return text.slice(0, maxLength - 3) + '...';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if all dependencies are satisfied (done)
|
|
82
|
+
*
|
|
83
|
+
* @param dependencies Array of dependencies
|
|
84
|
+
* @returns True if all dependencies are done or no dependencies
|
|
85
|
+
*/
|
|
86
|
+
export function areDependenciesSatisfied(dependencies) {
|
|
87
|
+
if (!dependencies || dependencies.length === 0) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return dependencies.every(dep => dep.status === 'done');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Count unsatisfied dependencies
|
|
94
|
+
*
|
|
95
|
+
* @param dependencies Array of dependencies
|
|
96
|
+
* @returns Number of dependencies not done
|
|
97
|
+
*/
|
|
98
|
+
export function countUnsatisfiedDependencies(dependencies) {
|
|
99
|
+
if (!dependencies || dependencies.length === 0) {
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
return dependencies.filter(dep => dep.status !== 'done').length;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Format dependencies status for display
|
|
106
|
+
*
|
|
107
|
+
* @param dependencies Array of dependencies
|
|
108
|
+
* @returns Status string (e.g., "all satisfied", "2 pending")
|
|
109
|
+
*/
|
|
110
|
+
export function formatDependenciesStatus(dependencies) {
|
|
111
|
+
if (!dependencies || dependencies.length === 0) {
|
|
112
|
+
return 'none';
|
|
113
|
+
}
|
|
114
|
+
const unsatisfied = countUnsatisfiedDependencies(dependencies);
|
|
115
|
+
if (unsatisfied === 0) {
|
|
116
|
+
return 'all satisfied';
|
|
117
|
+
}
|
|
118
|
+
return `${unsatisfied} pending`;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Build tree prefix for blocker display
|
|
122
|
+
*
|
|
123
|
+
* @param isLast Whether this is the last item
|
|
124
|
+
* @returns Tree prefix string
|
|
125
|
+
*/
|
|
126
|
+
export function getTreePrefix(isLast) {
|
|
127
|
+
return isLast ? ' └─' : ' ├─';
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=next.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.types.js","sourceRoot":"","sources":["../../../src/cli/commands/next.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects Command
|
|
3
|
+
*
|
|
4
|
+
* Lists all available projects for the authenticated user.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { ProjectsOptions } from './projects.types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Projects command action handler
|
|
10
|
+
*/
|
|
11
|
+
export declare function projectsAction(options: ProjectsOptions): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Register projects command with Commander
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerProjectsCommand(program: Command): void;
|
|
16
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/projects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,OAAO,EACL,eAAe,EAMhB,MAAM,qBAAqB,CAAC;AA2E7B;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB9D"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects Command
|
|
3
|
+
*
|
|
4
|
+
* Lists all available projects for the authenticated user.
|
|
5
|
+
*/
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import Table from 'cli-table3';
|
|
8
|
+
import { resolveConfig } from '../config/index.js';
|
|
9
|
+
import { withErrorHandler, CliError, NetworkError } from '../middleware/error-handler.js';
|
|
10
|
+
import { printBlank, printHeader } from '../ui/output.js';
|
|
11
|
+
import { colors } from '../ui/colors.js';
|
|
12
|
+
import { formatRelativeTime } from '../ui/time.js';
|
|
13
|
+
import { ApiClient } from '../../client/api-client.js';
|
|
14
|
+
import { formatProjectId, isCurrentProject, CURRENT_MARKER, } from './projects.types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Format projects as TOON
|
|
17
|
+
*/
|
|
18
|
+
function formatProjectsAsToon(projects, currentProjectId) {
|
|
19
|
+
const lines = ['@projects'];
|
|
20
|
+
for (const project of projects) {
|
|
21
|
+
const isCurrent = isCurrentProject(project, currentProjectId);
|
|
22
|
+
const marker = isCurrent ? '* ' : ' ';
|
|
23
|
+
lines.push(`${marker}${project.id}`);
|
|
24
|
+
lines.push(` name: ${project.name}`);
|
|
25
|
+
lines.push(` specs: ${project.specificationCount}`);
|
|
26
|
+
lines.push(` updated: ${formatRelativeTime(project.updatedAt)}`);
|
|
27
|
+
}
|
|
28
|
+
return lines.join('\n');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Display projects as table
|
|
32
|
+
*/
|
|
33
|
+
function displayProjectsTable(projects, currentProjectId) {
|
|
34
|
+
printBlank();
|
|
35
|
+
printHeader('Projects');
|
|
36
|
+
printBlank();
|
|
37
|
+
const table = new Table({
|
|
38
|
+
head: [
|
|
39
|
+
colors.muted('ID'),
|
|
40
|
+
colors.muted('NAME'),
|
|
41
|
+
colors.muted('SPECS'),
|
|
42
|
+
colors.muted('UPDATED'),
|
|
43
|
+
],
|
|
44
|
+
style: {
|
|
45
|
+
head: [],
|
|
46
|
+
border: [],
|
|
47
|
+
},
|
|
48
|
+
chars: {
|
|
49
|
+
'top': '', 'top-mid': '', 'top-left': '', 'top-right': '',
|
|
50
|
+
'bottom': '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '',
|
|
51
|
+
'left': '', 'left-mid': '', 'mid': '', 'mid-mid': '',
|
|
52
|
+
'right': '', 'right-mid': '', 'middle': ' ',
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
for (const project of projects) {
|
|
56
|
+
const isCurrent = isCurrentProject(project, currentProjectId);
|
|
57
|
+
const marker = isCurrent ? colors.primary(CURRENT_MARKER) : ' ';
|
|
58
|
+
const displayId = formatProjectId(project.id);
|
|
59
|
+
const displayName = isCurrent ? colors.primary(project.name) : project.name;
|
|
60
|
+
table.push([
|
|
61
|
+
marker + displayId,
|
|
62
|
+
displayName,
|
|
63
|
+
project.specificationCount.toString(),
|
|
64
|
+
formatRelativeTime(project.updatedAt),
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
console.log(table.toString());
|
|
68
|
+
printBlank();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Display empty state
|
|
72
|
+
*/
|
|
73
|
+
function displayEmptyState() {
|
|
74
|
+
printBlank();
|
|
75
|
+
console.log(colors.muted('No projects found.'));
|
|
76
|
+
console.log(colors.muted('Create a project at https://specforge.com.br'));
|
|
77
|
+
printBlank();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Projects command action handler
|
|
81
|
+
*/
|
|
82
|
+
export async function projectsAction(options) {
|
|
83
|
+
const config = resolveConfig();
|
|
84
|
+
if (!config.apiKey) {
|
|
85
|
+
throw new CliError('Not authenticated', 1, 'Run `specforge-mcp login` to authenticate first');
|
|
86
|
+
}
|
|
87
|
+
const spinner = ora({
|
|
88
|
+
text: 'Fetching projects...',
|
|
89
|
+
color: 'cyan',
|
|
90
|
+
}).start();
|
|
91
|
+
try {
|
|
92
|
+
const client = new ApiClient({
|
|
93
|
+
apiKey: config.apiKey,
|
|
94
|
+
apiUrl: config.apiUrl,
|
|
95
|
+
debug: config.debug,
|
|
96
|
+
});
|
|
97
|
+
const response = await client.call('list_projects', {
|
|
98
|
+
limit: options.limit ? parseInt(options.limit, 10) : undefined,
|
|
99
|
+
});
|
|
100
|
+
spinner.stop();
|
|
101
|
+
const projects = response.projects || [];
|
|
102
|
+
// Handle empty state
|
|
103
|
+
if (projects.length === 0) {
|
|
104
|
+
displayEmptyState();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Output based on format
|
|
108
|
+
if (options.json) {
|
|
109
|
+
console.log(JSON.stringify({ projects }, null, 2));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (options.toon) {
|
|
113
|
+
console.log(formatProjectsAsToon(projects, config.projectId ?? undefined));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Default: table format
|
|
117
|
+
displayProjectsTable(projects, config.projectId ?? undefined);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
spinner.fail('Failed to fetch projects');
|
|
121
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
122
|
+
if (message.includes('401') || message.includes('Unauthorized')) {
|
|
123
|
+
throw new CliError('Authentication failed', 1, 'Your API key may be invalid. Run `specforge-mcp login` to re-authenticate');
|
|
124
|
+
}
|
|
125
|
+
throw new NetworkError(`Failed to fetch projects: ${message}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Register projects command with Commander
|
|
130
|
+
*/
|
|
131
|
+
export function registerProjectsCommand(program) {
|
|
132
|
+
program
|
|
133
|
+
.command('projects')
|
|
134
|
+
.description('List available projects')
|
|
135
|
+
.option('--json', 'Output as JSON')
|
|
136
|
+
.option('--toon', 'Output as TOON format')
|
|
137
|
+
.option('--limit <n>', 'Limit number of results')
|
|
138
|
+
.addHelpText('after', `
|
|
139
|
+
Examples:
|
|
140
|
+
$ specforge-mcp projects # List all projects
|
|
141
|
+
$ specforge-mcp projects --json # Output as JSON
|
|
142
|
+
$ specforge-mcp projects --toon # Output as TOON format
|
|
143
|
+
$ specforge-mcp projects --limit 10 # Limit to 10 results
|
|
144
|
+
|
|
145
|
+
The current project (set via 'init' or 'switch') is marked with ▶
|
|
146
|
+
`)
|
|
147
|
+
.action(withErrorHandler(projectsAction));
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/cli/commands/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects Command Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the projects list command.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Projects command options from Commander
|
|
8
|
+
*/
|
|
9
|
+
export interface ProjectsOptions {
|
|
10
|
+
/** Output as JSON */
|
|
11
|
+
json?: boolean;
|
|
12
|
+
/** Output as TOON format */
|
|
13
|
+
toon?: boolean;
|
|
14
|
+
/** Limit number of results */
|
|
15
|
+
limit?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Project summary for list display
|
|
19
|
+
*/
|
|
20
|
+
export interface Project {
|
|
21
|
+
/** Project ID */
|
|
22
|
+
id: string;
|
|
23
|
+
/** Project name */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Number of specifications in project */
|
|
26
|
+
specificationCount: number;
|
|
27
|
+
/** Last update timestamp */
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
/** Project description (optional) */
|
|
30
|
+
description?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* API response for list_projects
|
|
34
|
+
*/
|
|
35
|
+
export interface ListProjectsApiResponse {
|
|
36
|
+
/** Array of projects */
|
|
37
|
+
projects: Project[];
|
|
38
|
+
/** Total count (for pagination) */
|
|
39
|
+
total?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Projects list response for output
|
|
43
|
+
*/
|
|
44
|
+
export interface ProjectsListResponse {
|
|
45
|
+
/** Array of projects */
|
|
46
|
+
projects: Project[];
|
|
47
|
+
/** Current project ID (for marking) */
|
|
48
|
+
currentProjectId?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Table column configuration
|
|
52
|
+
*/
|
|
53
|
+
export interface ProjectTableColumn {
|
|
54
|
+
/** Column header */
|
|
55
|
+
header: string;
|
|
56
|
+
/** Column width */
|
|
57
|
+
width?: number;
|
|
58
|
+
/** Alignment */
|
|
59
|
+
align?: 'left' | 'right' | 'center';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Default table columns for projects
|
|
63
|
+
*/
|
|
64
|
+
export declare const PROJECT_TABLE_COLUMNS: ProjectTableColumn[];
|
|
65
|
+
/**
|
|
66
|
+
* Current project marker
|
|
67
|
+
*/
|
|
68
|
+
export declare const CURRENT_MARKER = "\u25B6 ";
|
|
69
|
+
/**
|
|
70
|
+
* ID truncation length
|
|
71
|
+
*/
|
|
72
|
+
export declare const ID_DISPLAY_LENGTH = 8;
|
|
73
|
+
/**
|
|
74
|
+
* Format a project ID for display (truncated)
|
|
75
|
+
*/
|
|
76
|
+
export declare function formatProjectId(id: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a project is the current project
|
|
79
|
+
*/
|
|
80
|
+
export declare function isCurrentProject(project: Project, currentId?: string): boolean;
|
|
81
|
+
//# sourceMappingURL=projects.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/projects.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAKrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,YAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects Command Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the projects list command.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default table columns for projects
|
|
8
|
+
*/
|
|
9
|
+
export const PROJECT_TABLE_COLUMNS = [
|
|
10
|
+
{ header: 'ID', width: 10 },
|
|
11
|
+
{ header: 'NAME', width: 30 },
|
|
12
|
+
{ header: 'SPECS', width: 6, align: 'right' },
|
|
13
|
+
{ header: 'UPDATED', width: 12 },
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Current project marker
|
|
17
|
+
*/
|
|
18
|
+
export const CURRENT_MARKER = '▶ ';
|
|
19
|
+
/**
|
|
20
|
+
* ID truncation length
|
|
21
|
+
*/
|
|
22
|
+
export const ID_DISPLAY_LENGTH = 8;
|
|
23
|
+
/**
|
|
24
|
+
* Format a project ID for display (truncated)
|
|
25
|
+
*/
|
|
26
|
+
export function formatProjectId(id) {
|
|
27
|
+
return id.slice(0, ID_DISPLAY_LENGTH);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if a project is the current project
|
|
31
|
+
*/
|
|
32
|
+
export function isCurrentProject(project, currentId) {
|
|
33
|
+
return !!currentId && project.id === currentId;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=projects.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.types.js","sourceRoot":"","sources":["../../../src/cli/commands/projects.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8DH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACzD,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3B,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7B,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;IAC7C,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,SAAkB;IACnE,OAAO,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review Display Utilities
|
|
3
|
+
*
|
|
4
|
+
* Formats and displays review results in the terminal
|
|
5
|
+
* with proper colors and visual hierarchy.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { ReviewResult, ReviewOptions, CheckResult, CheckStatus } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Display review results in the terminal
|
|
11
|
+
*/
|
|
12
|
+
export declare function displayResults(result: ReviewResult, options: ReviewOptions): void;
|
|
13
|
+
/**
|
|
14
|
+
* Group checks by category
|
|
15
|
+
*/
|
|
16
|
+
export declare function groupByCategory(checks: CheckResult[]): Record<string, CheckResult[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Format check for JSON output
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatCheckForJson(check: CheckResult): Record<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Format result for JSON output
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatResultForJson(result: ReviewResult): Record<string, unknown>;
|
|
25
|
+
/**
|
|
26
|
+
* Get status color function
|
|
27
|
+
*/
|
|
28
|
+
export declare function getStatusColor(status: CheckStatus): typeof chalk.green;
|
|
29
|
+
/**
|
|
30
|
+
* Format percentage with color based on value
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatPercentage(passed: number, total: number): string;
|
|
33
|
+
//# sourceMappingURL=display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/review/display.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAiBjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAWpF;AA4ED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,KAAK,CAAC,KAAK,CAWtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQtE"}
|