@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,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Specs Command
|
|
3
|
+
*
|
|
4
|
+
* Lists specifications within a project.
|
|
5
|
+
*/
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import Table from 'cli-table3';
|
|
8
|
+
import { resolveConfig } from '../config/index.js';
|
|
9
|
+
import { withErrorHandler, CliError, NetworkError, ValidationError } from '../middleware/error-handler.js';
|
|
10
|
+
import { printBlank, printHeader } from '../ui/output.js';
|
|
11
|
+
import { colors } from '../ui/colors.js';
|
|
12
|
+
import { ApiClient } from '../../client/api-client.js';
|
|
13
|
+
import { formatSpecId, formatProgress, isCurrentSpec, isValidStatus, CURRENT_MARKER, VALID_STATUSES, } from './specs.types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Get chalk color function for status
|
|
16
|
+
*/
|
|
17
|
+
function getStatusColorFn(status) {
|
|
18
|
+
switch (status) {
|
|
19
|
+
case 'completed':
|
|
20
|
+
return colors.success;
|
|
21
|
+
case 'in_progress':
|
|
22
|
+
return colors.primary;
|
|
23
|
+
case 'ready':
|
|
24
|
+
return colors.warning;
|
|
25
|
+
case 'draft':
|
|
26
|
+
return colors.muted;
|
|
27
|
+
default:
|
|
28
|
+
return (s) => s;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Format specifications as TOON
|
|
33
|
+
*/
|
|
34
|
+
function formatSpecsAsToon(specs, projectName, currentSpecId) {
|
|
35
|
+
const lines = [`@specs (${projectName})`];
|
|
36
|
+
for (const spec of specs) {
|
|
37
|
+
const isCurrent = isCurrentSpec(spec, currentSpecId);
|
|
38
|
+
const marker = isCurrent ? '* ' : ' ';
|
|
39
|
+
const progress = formatProgress(spec.completedTickets, spec.ticketCount);
|
|
40
|
+
lines.push(`${marker}${spec.id}`);
|
|
41
|
+
lines.push(` title: ${spec.title}`);
|
|
42
|
+
lines.push(` status: ${spec.status}`);
|
|
43
|
+
lines.push(` tickets: ${spec.completedTickets}/${spec.ticketCount} (${progress})`);
|
|
44
|
+
}
|
|
45
|
+
return lines.join('\n');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Display specifications as table
|
|
49
|
+
*/
|
|
50
|
+
function displaySpecsTable(specs, projectName, currentSpecId) {
|
|
51
|
+
printBlank();
|
|
52
|
+
printHeader(`Specifications (${projectName})`);
|
|
53
|
+
printBlank();
|
|
54
|
+
const table = new Table({
|
|
55
|
+
head: [
|
|
56
|
+
colors.muted('ID'),
|
|
57
|
+
colors.muted('TITLE'),
|
|
58
|
+
colors.muted('STATUS'),
|
|
59
|
+
colors.muted('TICKETS'),
|
|
60
|
+
colors.muted('PROGRESS'),
|
|
61
|
+
],
|
|
62
|
+
style: {
|
|
63
|
+
head: [],
|
|
64
|
+
border: [],
|
|
65
|
+
},
|
|
66
|
+
chars: {
|
|
67
|
+
'top': '', 'top-mid': '', 'top-left': '', 'top-right': '',
|
|
68
|
+
'bottom': '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '',
|
|
69
|
+
'left': '', 'left-mid': '', 'mid': '', 'mid-mid': '',
|
|
70
|
+
'right': '', 'right-mid': '', 'middle': ' ',
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
for (const spec of specs) {
|
|
74
|
+
const isCurrent = isCurrentSpec(spec, currentSpecId);
|
|
75
|
+
const marker = isCurrent ? colors.primary(CURRENT_MARKER) : ' ';
|
|
76
|
+
const displayId = formatSpecId(spec.id);
|
|
77
|
+
const displayTitle = isCurrent ? colors.primary(spec.title) : spec.title;
|
|
78
|
+
const statusColor = getStatusColorFn(spec.status);
|
|
79
|
+
const progress = formatProgress(spec.completedTickets, spec.ticketCount);
|
|
80
|
+
table.push([
|
|
81
|
+
marker + displayId,
|
|
82
|
+
displayTitle,
|
|
83
|
+
statusColor(spec.status),
|
|
84
|
+
spec.ticketCount.toString(),
|
|
85
|
+
progress,
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
console.log(table.toString());
|
|
89
|
+
printBlank();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Display empty state
|
|
93
|
+
*/
|
|
94
|
+
function displayEmptyState(projectName, statusFilter) {
|
|
95
|
+
printBlank();
|
|
96
|
+
console.log(colors.muted(`No specifications found in "${projectName}".`));
|
|
97
|
+
if (statusFilter) {
|
|
98
|
+
console.log(colors.muted(`Try removing the --status filter.`));
|
|
99
|
+
}
|
|
100
|
+
printBlank();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Specs command action handler
|
|
104
|
+
*/
|
|
105
|
+
export async function specsAction(projectId, options) {
|
|
106
|
+
const config = resolveConfig();
|
|
107
|
+
if (!config.apiKey) {
|
|
108
|
+
throw new CliError('Not authenticated', 1, 'Run `specforge-mcp login` to authenticate first');
|
|
109
|
+
}
|
|
110
|
+
// Determine project ID
|
|
111
|
+
const targetProjectId = projectId || config.projectId;
|
|
112
|
+
if (!targetProjectId) {
|
|
113
|
+
throw new CliError('No project specified', 1, "Provide a project ID or run 'specforge-mcp init' to set a default project");
|
|
114
|
+
}
|
|
115
|
+
// Validate status filter if provided
|
|
116
|
+
if (options.status && !isValidStatus(options.status)) {
|
|
117
|
+
throw new ValidationError(`Invalid status: ${options.status}`, `Valid statuses: ${VALID_STATUSES.join(', ')}`);
|
|
118
|
+
}
|
|
119
|
+
const spinner = ora({
|
|
120
|
+
text: 'Fetching specifications...',
|
|
121
|
+
color: 'cyan',
|
|
122
|
+
}).start();
|
|
123
|
+
try {
|
|
124
|
+
const client = new ApiClient({
|
|
125
|
+
apiKey: config.apiKey,
|
|
126
|
+
apiUrl: config.apiUrl,
|
|
127
|
+
debug: config.debug,
|
|
128
|
+
});
|
|
129
|
+
// Get project name for display
|
|
130
|
+
let projectName = targetProjectId;
|
|
131
|
+
try {
|
|
132
|
+
const projectResponse = await client.call('get_project', {
|
|
133
|
+
projectId: targetProjectId,
|
|
134
|
+
});
|
|
135
|
+
projectName = projectResponse.name || targetProjectId;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Use project ID if name fetch fails
|
|
139
|
+
}
|
|
140
|
+
// Get specifications
|
|
141
|
+
const response = await client.call('list_specifications', {
|
|
142
|
+
projectId: targetProjectId,
|
|
143
|
+
status: options.status,
|
|
144
|
+
});
|
|
145
|
+
spinner.stop();
|
|
146
|
+
const specs = response.specifications || [];
|
|
147
|
+
// Handle empty state
|
|
148
|
+
if (specs.length === 0) {
|
|
149
|
+
displayEmptyState(projectName, options.status);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
// Output based on format
|
|
153
|
+
if (options.json) {
|
|
154
|
+
console.log(JSON.stringify({
|
|
155
|
+
project: projectName,
|
|
156
|
+
specifications: specs,
|
|
157
|
+
}, null, 2));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (options.toon) {
|
|
161
|
+
console.log(formatSpecsAsToon(specs, projectName, config.specificationId ?? undefined));
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// Default: table format
|
|
165
|
+
displaySpecsTable(specs, projectName, config.specificationId ?? undefined);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
spinner.fail('Failed to fetch specifications');
|
|
169
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
170
|
+
if (message.includes('404') || message.includes('not found')) {
|
|
171
|
+
throw new CliError(`Project "${targetProjectId}" not found`, 1, 'Check the project ID or run `specforge-mcp projects` to see available projects');
|
|
172
|
+
}
|
|
173
|
+
if (message.includes('401') || message.includes('Unauthorized')) {
|
|
174
|
+
throw new CliError('Authentication failed', 1, 'Your API key may be invalid. Run `specforge-mcp login` to re-authenticate');
|
|
175
|
+
}
|
|
176
|
+
if (message.includes('403') || message.includes('Forbidden')) {
|
|
177
|
+
throw new CliError(`Access denied to project "${targetProjectId}"`, 1, 'You may not have permission to view this project');
|
|
178
|
+
}
|
|
179
|
+
throw new NetworkError(`Failed to fetch specifications: ${message}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Register specs command with Commander
|
|
184
|
+
*/
|
|
185
|
+
export function registerSpecsCommand(program) {
|
|
186
|
+
program
|
|
187
|
+
.command('specs [projectId]')
|
|
188
|
+
.description('List specifications in a project')
|
|
189
|
+
.option('--status <status>', 'Filter by status (draft, ready, in_progress, completed)')
|
|
190
|
+
.option('--json', 'Output as JSON')
|
|
191
|
+
.option('--toon', 'Output as TOON format')
|
|
192
|
+
.addHelpText('after', `
|
|
193
|
+
Examples:
|
|
194
|
+
$ specforge-mcp specs # List specs for current project
|
|
195
|
+
$ specforge-mcp specs proj_abc123 # List specs for specific project
|
|
196
|
+
$ specforge-mcp specs --status ready # Filter by status
|
|
197
|
+
$ specforge-mcp specs --json # Output as JSON
|
|
198
|
+
$ specforge-mcp specs --toon # Output as TOON format
|
|
199
|
+
|
|
200
|
+
Valid statuses: draft, ready, in_progress, completed
|
|
201
|
+
|
|
202
|
+
The current specification (set via 'init' or 'switch') is marked with ▶
|
|
203
|
+
|
|
204
|
+
Status colors:
|
|
205
|
+
${colors.success('completed')} - All tickets done
|
|
206
|
+
${colors.primary('in_progress')} - Currently being implemented
|
|
207
|
+
${colors.warning('ready')} - Ready to start implementation
|
|
208
|
+
${colors.muted('draft')} - Still being defined
|
|
209
|
+
`)
|
|
210
|
+
.action(withErrorHandler(specsAction));
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=specs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../src/cli/commands/specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Specs Command Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the specifications list command.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Specs command options from Commander
|
|
8
|
+
*/
|
|
9
|
+
export interface SpecsOptions {
|
|
10
|
+
/** Filter by status */
|
|
11
|
+
status?: SpecificationStatus;
|
|
12
|
+
/** Output as JSON */
|
|
13
|
+
json?: boolean;
|
|
14
|
+
/** Output as TOON format */
|
|
15
|
+
toon?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Valid specification statuses
|
|
19
|
+
*/
|
|
20
|
+
export type SpecificationStatus = 'draft' | 'ready' | 'in_progress' | 'completed';
|
|
21
|
+
/**
|
|
22
|
+
* All valid specification statuses
|
|
23
|
+
*/
|
|
24
|
+
export declare const VALID_STATUSES: SpecificationStatus[];
|
|
25
|
+
/**
|
|
26
|
+
* Specification summary for list display
|
|
27
|
+
*/
|
|
28
|
+
export interface Specification {
|
|
29
|
+
/** Specification ID */
|
|
30
|
+
id: string;
|
|
31
|
+
/** Specification title */
|
|
32
|
+
title: string;
|
|
33
|
+
/** Current status */
|
|
34
|
+
status: SpecificationStatus;
|
|
35
|
+
/** Total number of tickets */
|
|
36
|
+
ticketCount: number;
|
|
37
|
+
/** Number of completed tickets */
|
|
38
|
+
completedTickets: number;
|
|
39
|
+
/** Specification description (optional) */
|
|
40
|
+
description?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* API response for get_project
|
|
44
|
+
*/
|
|
45
|
+
export interface GetProjectApiResponse {
|
|
46
|
+
/** Project ID */
|
|
47
|
+
id: string;
|
|
48
|
+
/** Project name */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Project description */
|
|
51
|
+
description?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* API response for list_specifications
|
|
55
|
+
*/
|
|
56
|
+
export interface ListSpecificationsApiResponse {
|
|
57
|
+
/** Array of specifications */
|
|
58
|
+
specifications: Specification[];
|
|
59
|
+
/** Total count (for pagination) */
|
|
60
|
+
total?: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Specs list response for output
|
|
64
|
+
*/
|
|
65
|
+
export interface SpecsListResponse {
|
|
66
|
+
/** Project name for display */
|
|
67
|
+
project: string;
|
|
68
|
+
/** Array of specifications */
|
|
69
|
+
specifications: Specification[];
|
|
70
|
+
/** Current specification ID (for marking) */
|
|
71
|
+
currentSpecId?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Table column configuration
|
|
75
|
+
*/
|
|
76
|
+
export interface SpecTableColumn {
|
|
77
|
+
/** Column header */
|
|
78
|
+
header: string;
|
|
79
|
+
/** Column width */
|
|
80
|
+
width?: number;
|
|
81
|
+
/** Alignment */
|
|
82
|
+
align?: 'left' | 'right' | 'center';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Default table columns for specifications
|
|
86
|
+
*/
|
|
87
|
+
export declare const SPEC_TABLE_COLUMNS: SpecTableColumn[];
|
|
88
|
+
/**
|
|
89
|
+
* Status display colors
|
|
90
|
+
*/
|
|
91
|
+
export declare const STATUS_COLORS: Record<SpecificationStatus, string>;
|
|
92
|
+
/**
|
|
93
|
+
* Current specification marker
|
|
94
|
+
*/
|
|
95
|
+
export declare const CURRENT_MARKER = "\u25B6 ";
|
|
96
|
+
/**
|
|
97
|
+
* ID truncation length
|
|
98
|
+
*/
|
|
99
|
+
export declare const ID_DISPLAY_LENGTH = 8;
|
|
100
|
+
/**
|
|
101
|
+
* Calculate progress percentage
|
|
102
|
+
*/
|
|
103
|
+
export declare function calculateProgress(completed: number, total: number): number;
|
|
104
|
+
/**
|
|
105
|
+
* Format progress for display
|
|
106
|
+
*/
|
|
107
|
+
export declare function formatProgress(completed: number, total: number): string;
|
|
108
|
+
/**
|
|
109
|
+
* Format a specification ID for display (truncated)
|
|
110
|
+
*/
|
|
111
|
+
export declare function formatSpecId(id: string): string;
|
|
112
|
+
/**
|
|
113
|
+
* Check if a specification is the current specification
|
|
114
|
+
*/
|
|
115
|
+
export declare function isCurrentSpec(spec: Specification, currentId?: string): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Validate status filter
|
|
118
|
+
*/
|
|
119
|
+
export declare function isValidStatus(status: string): status is SpecificationStatus;
|
|
120
|
+
//# sourceMappingURL=specs.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/specs.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,qBAAqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,mBAAmB,EAK/C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,8BAA8B;IAC9B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,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,kBAAkB,EAAE,eAAe,EAM/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAK7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,YAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,mBAAmB,CAE3E"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Specs Command Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the specifications list command.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* All valid specification statuses
|
|
8
|
+
*/
|
|
9
|
+
export const VALID_STATUSES = [
|
|
10
|
+
'draft',
|
|
11
|
+
'ready',
|
|
12
|
+
'in_progress',
|
|
13
|
+
'completed',
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Default table columns for specifications
|
|
17
|
+
*/
|
|
18
|
+
export const SPEC_TABLE_COLUMNS = [
|
|
19
|
+
{ header: 'ID', width: 10 },
|
|
20
|
+
{ header: 'TITLE', width: 30 },
|
|
21
|
+
{ header: 'STATUS', width: 12 },
|
|
22
|
+
{ header: 'TICKETS', width: 8, align: 'right' },
|
|
23
|
+
{ header: 'PROGRESS', width: 10, align: 'right' },
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Status display colors
|
|
27
|
+
*/
|
|
28
|
+
export const STATUS_COLORS = {
|
|
29
|
+
completed: 'green',
|
|
30
|
+
in_progress: 'blue',
|
|
31
|
+
ready: 'yellow',
|
|
32
|
+
draft: 'dim',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Current specification marker
|
|
36
|
+
*/
|
|
37
|
+
export const CURRENT_MARKER = '▶ ';
|
|
38
|
+
/**
|
|
39
|
+
* ID truncation length
|
|
40
|
+
*/
|
|
41
|
+
export const ID_DISPLAY_LENGTH = 8;
|
|
42
|
+
/**
|
|
43
|
+
* Calculate progress percentage
|
|
44
|
+
*/
|
|
45
|
+
export function calculateProgress(completed, total) {
|
|
46
|
+
if (total === 0)
|
|
47
|
+
return 0;
|
|
48
|
+
return Math.round((completed / total) * 100);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Format progress for display
|
|
52
|
+
*/
|
|
53
|
+
export function formatProgress(completed, total) {
|
|
54
|
+
const percentage = calculateProgress(completed, total);
|
|
55
|
+
return `${percentage}%`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Format a specification ID for display (truncated)
|
|
59
|
+
*/
|
|
60
|
+
export function formatSpecId(id) {
|
|
61
|
+
return id.slice(0, ID_DISPLAY_LENGTH);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if a specification is the current specification
|
|
65
|
+
*/
|
|
66
|
+
export function isCurrentSpec(spec, currentId) {
|
|
67
|
+
return !!currentId && spec.id === currentId;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Validate status filter
|
|
71
|
+
*/
|
|
72
|
+
export function isValidStatus(status) {
|
|
73
|
+
return VALID_STATUSES.includes(status);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=specs.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.types.js","sourceRoot":"","sources":["../../../src/cli/commands/specs.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,OAAO;IACP,OAAO;IACP,aAAa;IACb,WAAW;CACZ,CAAC;AAkEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3B,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IAC/B,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,KAAK;CACb,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,iBAAiB,CAAC,SAAiB,EAAE,KAAa;IAChE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,KAAa;IAC7D,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,GAAG,UAAU,GAAG,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAmB,EAAE,SAAkB;IACnE,OAAO,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,cAAc,CAAC,QAAQ,CAAC,MAA6B,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Command
|
|
3
|
+
*
|
|
4
|
+
* Displays the current working context and implementation session status,
|
|
5
|
+
* providing a quick overview of where the user is in their workflow.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { StatusOptions } from './status.types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Status command action handler
|
|
11
|
+
*/
|
|
12
|
+
export declare function statusAction(options: StatusOptions): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Register status command with Commander
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerStatusCommand(program: Command): void;
|
|
17
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EACL,aAAa,EAad,MAAM,mBAAmB,CAAC;AAsK3B;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC5D"}
|