@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,271 @@
|
|
|
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 ora from 'ora';
|
|
8
|
+
import { resolveConfig } from '../config/index.js';
|
|
9
|
+
import { withErrorHandler, CliError, NetworkError } from '../middleware/error-handler.js';
|
|
10
|
+
import { printBlank } from '../ui/output.js';
|
|
11
|
+
import { colors } from '../ui/colors.js';
|
|
12
|
+
import { ApiClient } from '../../client/api-client.js';
|
|
13
|
+
import { formatTicketNumber, formatDuration, hasWorkingContext, transformApiResponse, transformToDashboardData, calculateSessionProgress, } from './status.types.js';
|
|
14
|
+
import { renderDashboard } from '../ui/dashboard.js';
|
|
15
|
+
/**
|
|
16
|
+
* Display working context section
|
|
17
|
+
*/
|
|
18
|
+
function displayWorkingContext(context) {
|
|
19
|
+
console.log(colors.bold('Working Context'));
|
|
20
|
+
console.log(colors.muted('───────────────'));
|
|
21
|
+
if (!hasWorkingContext(context)) {
|
|
22
|
+
console.log(colors.muted('No context set'));
|
|
23
|
+
console.log(colors.muted("Run 'specforge-mcp switch <id>' to set context"));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (context.project) {
|
|
27
|
+
console.log(`Project: ${context.project.name}`);
|
|
28
|
+
}
|
|
29
|
+
if (context.specification) {
|
|
30
|
+
console.log(`Specification: ${context.specification.title}`);
|
|
31
|
+
}
|
|
32
|
+
else if (context.project) {
|
|
33
|
+
console.log(`Specification: ${colors.muted('(not set)')}`);
|
|
34
|
+
}
|
|
35
|
+
if (context.epic) {
|
|
36
|
+
const epicNum = context.epic.epicNumber
|
|
37
|
+
? `E${context.epic.epicNumber.toString().padStart(2, '0')} - `
|
|
38
|
+
: '';
|
|
39
|
+
console.log(`Epic: ${epicNum}${context.epic.title}`);
|
|
40
|
+
}
|
|
41
|
+
if (context.ticket) {
|
|
42
|
+
const ticketNum = formatTicketNumber(context.ticket.ticketNumber);
|
|
43
|
+
console.log(`Ticket: ${ticketNum} - ${context.ticket.title}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Display implementation session section
|
|
48
|
+
*/
|
|
49
|
+
function displayImplementationSession(session) {
|
|
50
|
+
printBlank();
|
|
51
|
+
console.log(colors.bold('Implementation Session'));
|
|
52
|
+
console.log(colors.muted('──────────────────────'));
|
|
53
|
+
if (!session) {
|
|
54
|
+
console.log(colors.muted('No active session'));
|
|
55
|
+
console.log(colors.muted("Run 'specforge-mcp session start' to begin"));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Status with duration
|
|
59
|
+
const duration = formatDuration(session.startedAt);
|
|
60
|
+
const statusColor = session.status === 'active' ? colors.primary : colors.muted;
|
|
61
|
+
console.log(`Status: ${statusColor(session.status)} (started ${duration})`);
|
|
62
|
+
// Progress if we have total
|
|
63
|
+
if (session.stats.total > 0) {
|
|
64
|
+
const progress = calculateSessionProgress(session);
|
|
65
|
+
console.log(`Progress: ${progress}% (${session.stats.completed + session.stats.failed + session.stats.skipped}/${session.stats.total})`);
|
|
66
|
+
}
|
|
67
|
+
// Stats
|
|
68
|
+
console.log(`Completed: ${colors.success(session.stats.completed.toString())} tickets`);
|
|
69
|
+
const failedDisplay = session.stats.failed > 0
|
|
70
|
+
? colors.error(session.stats.failed.toString())
|
|
71
|
+
: '0';
|
|
72
|
+
console.log(`Failed: ${failedDisplay} tickets`);
|
|
73
|
+
const skippedDisplay = session.stats.skipped > 0
|
|
74
|
+
? colors.warning(session.stats.skipped.toString())
|
|
75
|
+
: '0';
|
|
76
|
+
console.log(`Skipped: ${skippedDisplay} tickets`);
|
|
77
|
+
// Current ticket
|
|
78
|
+
if (session.currentTicket) {
|
|
79
|
+
const ticketNum = formatTicketNumber(session.currentTicket.ticketNumber);
|
|
80
|
+
printBlank();
|
|
81
|
+
console.log(`Current: ${ticketNum} - ${session.currentTicket.title}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Display next actionable section
|
|
86
|
+
*/
|
|
87
|
+
function displayNextActionable(nextActionable) {
|
|
88
|
+
if (!nextActionable) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
printBlank();
|
|
92
|
+
console.log(colors.bold('Next Actionable'));
|
|
93
|
+
console.log(colors.muted('───────────────'));
|
|
94
|
+
const ticketNum = formatTicketNumber(nextActionable.ticketNumber);
|
|
95
|
+
const priorityColor = nextActionable.priority === 'high'
|
|
96
|
+
? colors.error
|
|
97
|
+
: nextActionable.priority === 'medium'
|
|
98
|
+
? colors.warning
|
|
99
|
+
: colors.muted;
|
|
100
|
+
console.log(`${ticketNum} - ${nextActionable.title} (${priorityColor(nextActionable.priority)} priority)`);
|
|
101
|
+
if (nextActionable.epicTitle) {
|
|
102
|
+
console.log(colors.muted(` in ${nextActionable.epicTitle}`));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Display status in console format
|
|
107
|
+
*/
|
|
108
|
+
function displayStatus(status) {
|
|
109
|
+
printBlank();
|
|
110
|
+
displayWorkingContext(status.workingContext);
|
|
111
|
+
displayImplementationSession(status.implementationSession);
|
|
112
|
+
displayNextActionable(status.nextActionable);
|
|
113
|
+
printBlank();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Format status as TOON
|
|
117
|
+
*/
|
|
118
|
+
function formatStatusAsToon(status) {
|
|
119
|
+
const lines = ['@status'];
|
|
120
|
+
// Working context
|
|
121
|
+
const ctx = status.workingContext;
|
|
122
|
+
if (ctx.project) {
|
|
123
|
+
lines.push(` project: ${ctx.project.name}`);
|
|
124
|
+
}
|
|
125
|
+
if (ctx.specification) {
|
|
126
|
+
lines.push(` spec: ${ctx.specification.title}`);
|
|
127
|
+
}
|
|
128
|
+
if (ctx.epic) {
|
|
129
|
+
lines.push(` epic: ${ctx.epic.title}`);
|
|
130
|
+
}
|
|
131
|
+
if (ctx.ticket) {
|
|
132
|
+
lines.push(` ticket: ${formatTicketNumber(ctx.ticket.ticketNumber)} ${ctx.ticket.title}`);
|
|
133
|
+
}
|
|
134
|
+
// Session
|
|
135
|
+
if (status.implementationSession) {
|
|
136
|
+
const sess = status.implementationSession;
|
|
137
|
+
lines.push(` session: ${sess.status}`);
|
|
138
|
+
lines.push(` completed: ${sess.stats.completed}`);
|
|
139
|
+
lines.push(` failed: ${sess.stats.failed}`);
|
|
140
|
+
lines.push(` skipped: ${sess.stats.skipped}`);
|
|
141
|
+
if (sess.currentTicket) {
|
|
142
|
+
lines.push(` current: ${formatTicketNumber(sess.currentTicket.ticketNumber)} ${sess.currentTicket.title}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Next actionable
|
|
146
|
+
if (status.nextActionable) {
|
|
147
|
+
const next = status.nextActionable;
|
|
148
|
+
lines.push(` next: ${formatTicketNumber(next.ticketNumber)} ${next.title} (${next.priority})`);
|
|
149
|
+
}
|
|
150
|
+
return lines.join('\n');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Status command action handler
|
|
154
|
+
*/
|
|
155
|
+
export async function statusAction(options) {
|
|
156
|
+
const config = resolveConfig();
|
|
157
|
+
if (!config.apiKey) {
|
|
158
|
+
throw new CliError('Not authenticated', 1, 'Run `specforge-mcp login` to authenticate first');
|
|
159
|
+
}
|
|
160
|
+
const spinner = ora({
|
|
161
|
+
text: 'Fetching status...',
|
|
162
|
+
color: 'cyan',
|
|
163
|
+
}).start();
|
|
164
|
+
try {
|
|
165
|
+
const client = new ApiClient({
|
|
166
|
+
apiKey: config.apiKey,
|
|
167
|
+
apiUrl: config.apiUrl,
|
|
168
|
+
debug: config.debug,
|
|
169
|
+
});
|
|
170
|
+
// Get working context (includes implementation session)
|
|
171
|
+
const contextResponse = await client.call('get_working_context', {});
|
|
172
|
+
// Get next actionable if we have a specification
|
|
173
|
+
let ticketsResponse;
|
|
174
|
+
if (config.specificationId) {
|
|
175
|
+
try {
|
|
176
|
+
ticketsResponse = await client.call('list_tickets', {
|
|
177
|
+
specificationId: config.specificationId,
|
|
178
|
+
status: 'pending',
|
|
179
|
+
limit: 1,
|
|
180
|
+
sortBy: 'priority',
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Ignore - next actionable is optional
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
spinner.stop();
|
|
188
|
+
// Dashboard mode
|
|
189
|
+
if (options.dashboard) {
|
|
190
|
+
// Fetch additional dashboard data
|
|
191
|
+
let dashboardResponse = {};
|
|
192
|
+
try {
|
|
193
|
+
dashboardResponse = await client.call('get_report', {
|
|
194
|
+
type: 'dashboard',
|
|
195
|
+
specificationId: config.specificationId,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Fallback to basic dashboard data from context
|
|
200
|
+
}
|
|
201
|
+
const dashboardData = transformToDashboardData(contextResponse, dashboardResponse);
|
|
202
|
+
if (options.json) {
|
|
203
|
+
console.log(JSON.stringify(dashboardData, null, 2));
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
console.log(renderDashboard(dashboardData));
|
|
207
|
+
}
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
// Transform API response to status
|
|
211
|
+
const status = transformApiResponse(contextResponse, ticketsResponse);
|
|
212
|
+
// Output based on format
|
|
213
|
+
if (options.json) {
|
|
214
|
+
console.log(JSON.stringify(status, null, 2));
|
|
215
|
+
}
|
|
216
|
+
else if (options.toon) {
|
|
217
|
+
console.log(formatStatusAsToon(status));
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
displayStatus(status);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
spinner.fail('Failed to fetch status');
|
|
225
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
226
|
+
if (message.includes('401') || message.includes('Unauthorized')) {
|
|
227
|
+
throw new CliError('Authentication failed', 1, 'Your API key may be invalid. Run `specforge-mcp login` to re-authenticate');
|
|
228
|
+
}
|
|
229
|
+
throw new NetworkError(`Failed to fetch status: ${message}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Register status command with Commander
|
|
234
|
+
*/
|
|
235
|
+
export function registerStatusCommand(program) {
|
|
236
|
+
program
|
|
237
|
+
.command('status')
|
|
238
|
+
.description('Show current working context and session status')
|
|
239
|
+
.option('-d, --dashboard', 'Show full project dashboard with analytics')
|
|
240
|
+
.option('--json', 'Output as JSON')
|
|
241
|
+
.option('--toon', 'Output as TOON format')
|
|
242
|
+
.addHelpText('after', `
|
|
243
|
+
Examples:
|
|
244
|
+
$ specforge-mcp status # Show current status
|
|
245
|
+
$ specforge-mcp status -d # Show full dashboard with analytics
|
|
246
|
+
$ specforge-mcp status --dashboard # Show full dashboard with analytics
|
|
247
|
+
$ specforge-mcp status --json # Output as JSON
|
|
248
|
+
$ specforge-mcp status --toon # Output as TOON format
|
|
249
|
+
|
|
250
|
+
Displays:
|
|
251
|
+
- Working Context: Current project, specification, epic, and ticket
|
|
252
|
+
- Implementation Session: Active session status and statistics
|
|
253
|
+
- Next Actionable: Suggested next ticket to work on
|
|
254
|
+
|
|
255
|
+
Dashboard View (--dashboard):
|
|
256
|
+
- Overall Progress: Ticket completion with progress bar
|
|
257
|
+
- Time Metrics: Estimated, actual, remaining hours and velocity
|
|
258
|
+
- Specification Breakdown: Progress per specification
|
|
259
|
+
- Epic Status: Progress per epic
|
|
260
|
+
- Priority Distribution: Critical, high, medium, low tickets
|
|
261
|
+
- Complexity Distribution: XS, S, M, L, XL tickets
|
|
262
|
+
- Active Session: Current session details
|
|
263
|
+
- Next Actionable: Top 3 pending tickets
|
|
264
|
+
- Blockers & Alerts: Blocked and failed tickets
|
|
265
|
+
|
|
266
|
+
Use 'specforge-mcp switch <id>' to change your working context.
|
|
267
|
+
Use 'specforge-mcp session start' to begin an implementation session.
|
|
268
|
+
`)
|
|
269
|
+
.action(withErrorHandler(statusAction));
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAQL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAuB;IACpD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU;YACrC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CAAC,OAA+B;IACnE,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,QAAQ,GAAG,CAAC,CAAC;IAE/E,4BAA4B;IAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5I,CAAC;IAED,QAAQ;IACR,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;IAExF,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC/C,CAAC,CAAC,GAAG,CAAC;IACR,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,UAAU,CAAC,CAAC;IAEnD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClD,CAAC,CAAC,GAAG,CAAC;IACR,OAAO,CAAC,GAAG,CAAC,cAAc,cAAc,UAAU,CAAC,CAAC;IAEpD,iBAAiB;IACjB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACzE,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,cAAiD;IAC9E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,KAAK,MAAM;QACtD,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,cAAc,CAAC,QAAQ,KAAK,QAAQ;YACpC,CAAC,CAAC,MAAM,CAAC,OAAO;YAChB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAEnB,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,MAAM,cAAc,CAAC,KAAK,KAAK,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE3G,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAsB;IAC3C,UAAU,EAAE,CAAC;IAEb,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC7C,4BAA4B,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC3D,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAE7C,UAAU,EAAE,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,KAAK,GAAa,CAAC,SAAS,CAAC,CAAC;IAEpC,kBAAkB;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC;IAClC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,aAAa,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,UAAU;IACV,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,WAAW,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAsB;IACvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAChB,mBAAmB,EACnB,CAAC,EACD,iDAAiD,CAClD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,wDAAwD;QACxD,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,IAAI,CACvC,qBAAqB,EACrB,EAAE,CACH,CAAC;QAEF,iDAAiD;QACjD,IAAI,eAAmD,CAAC;QACxD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,eAAe,GAAG,MAAM,MAAM,CAAC,IAAI,CACjC,cAAc,EACd;oBACE,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,UAAU;iBACnB,CACF,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;YACzC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,iBAAiB;QACjB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,kCAAkC;YAClC,IAAI,iBAAiB,GAAQ,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,iBAAiB,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;oBAClD,IAAI,EAAE,WAAW;oBACjB,eAAe,EAAE,MAAM,CAAC,eAAe;iBACxC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;YAED,MAAM,aAAa,GAAG,wBAAwB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;YAEnF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAEtE,yBAAyB;QACzB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAEzE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,QAAQ,CAChB,uBAAuB,EACvB,CAAC,EACD,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,4CAA4C,CAAC;SACvE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BzB,CAAC;SACG,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Command Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the status command working context,
|
|
5
|
+
* implementation session display, and dashboard analytics.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Status command options from Commander
|
|
9
|
+
*/
|
|
10
|
+
export interface StatusOptions {
|
|
11
|
+
/** Output as JSON */
|
|
12
|
+
json?: boolean;
|
|
13
|
+
/** Output as TOON format */
|
|
14
|
+
toon?: boolean;
|
|
15
|
+
/** Show full project dashboard with analytics */
|
|
16
|
+
dashboard?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Project summary for status display
|
|
20
|
+
*/
|
|
21
|
+
export interface ProjectSummary {
|
|
22
|
+
/** Project ID */
|
|
23
|
+
id: string;
|
|
24
|
+
/** Project name */
|
|
25
|
+
name: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Specification summary for status display
|
|
29
|
+
*/
|
|
30
|
+
export interface SpecificationSummary {
|
|
31
|
+
/** Specification ID */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Specification title */
|
|
34
|
+
title: string;
|
|
35
|
+
/** Specification status */
|
|
36
|
+
status?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Epic summary for status display
|
|
40
|
+
*/
|
|
41
|
+
export interface EpicSummary {
|
|
42
|
+
/** Epic ID */
|
|
43
|
+
id: string;
|
|
44
|
+
/** Epic title */
|
|
45
|
+
title: string;
|
|
46
|
+
/** Epic number */
|
|
47
|
+
epicNumber?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Ticket summary for status display
|
|
51
|
+
*/
|
|
52
|
+
export interface TicketSummary {
|
|
53
|
+
/** Ticket ID */
|
|
54
|
+
id: string;
|
|
55
|
+
/** Ticket title */
|
|
56
|
+
title: string;
|
|
57
|
+
/** Ticket number */
|
|
58
|
+
ticketNumber: number;
|
|
59
|
+
/** Ticket status */
|
|
60
|
+
status?: string;
|
|
61
|
+
/** Ticket priority */
|
|
62
|
+
priority?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Working context representing current location in hierarchy
|
|
66
|
+
*/
|
|
67
|
+
export interface WorkingContext {
|
|
68
|
+
/** Current project */
|
|
69
|
+
project?: ProjectSummary;
|
|
70
|
+
/** Current specification */
|
|
71
|
+
specification?: SpecificationSummary;
|
|
72
|
+
/** Current epic */
|
|
73
|
+
epic?: EpicSummary;
|
|
74
|
+
/** Current ticket */
|
|
75
|
+
ticket?: TicketSummary;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Implementation session statistics
|
|
79
|
+
*/
|
|
80
|
+
export interface SessionStats {
|
|
81
|
+
/** Number of completed tickets */
|
|
82
|
+
completed: number;
|
|
83
|
+
/** Number of failed tickets */
|
|
84
|
+
failed: number;
|
|
85
|
+
/** Number of skipped tickets */
|
|
86
|
+
skipped: number;
|
|
87
|
+
/** Total number of tickets in scope */
|
|
88
|
+
total: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Implementation session summary
|
|
92
|
+
*/
|
|
93
|
+
export interface ImplementationSession {
|
|
94
|
+
/** Session ID */
|
|
95
|
+
id: string;
|
|
96
|
+
/** Session status */
|
|
97
|
+
status: SessionStatus;
|
|
98
|
+
/** When the session was started */
|
|
99
|
+
startedAt: string;
|
|
100
|
+
/** Specification ID this session is for */
|
|
101
|
+
specificationId: string;
|
|
102
|
+
/** Specification title (for display) */
|
|
103
|
+
specificationTitle?: string;
|
|
104
|
+
/** Session statistics */
|
|
105
|
+
stats: SessionStats;
|
|
106
|
+
/** Current ticket being worked on */
|
|
107
|
+
currentTicket?: TicketSummary;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Valid session statuses
|
|
111
|
+
*/
|
|
112
|
+
export type SessionStatus = 'active' | 'paused' | 'completed' | 'failed';
|
|
113
|
+
/**
|
|
114
|
+
* Next actionable ticket suggestion
|
|
115
|
+
*/
|
|
116
|
+
export interface NextActionable {
|
|
117
|
+
/** Ticket ID */
|
|
118
|
+
id: string;
|
|
119
|
+
/** Ticket title */
|
|
120
|
+
title: string;
|
|
121
|
+
/** Ticket number */
|
|
122
|
+
ticketNumber: number;
|
|
123
|
+
/** Ticket priority */
|
|
124
|
+
priority: string;
|
|
125
|
+
/** Epic this ticket belongs to */
|
|
126
|
+
epicTitle?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Complete status response
|
|
130
|
+
*/
|
|
131
|
+
export interface StatusResponse {
|
|
132
|
+
/** Current working context */
|
|
133
|
+
workingContext: WorkingContext;
|
|
134
|
+
/** Active implementation session (if any) */
|
|
135
|
+
implementationSession?: ImplementationSession;
|
|
136
|
+
/** Next suggested ticket to work on */
|
|
137
|
+
nextActionable?: NextActionable;
|
|
138
|
+
/** Timestamp of status fetch */
|
|
139
|
+
timestamp: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* API response from get_working_context
|
|
143
|
+
*/
|
|
144
|
+
export interface WorkingContextApiResponse {
|
|
145
|
+
project?: {
|
|
146
|
+
id: string;
|
|
147
|
+
name: string;
|
|
148
|
+
};
|
|
149
|
+
specification?: {
|
|
150
|
+
id: string;
|
|
151
|
+
title: string;
|
|
152
|
+
status?: string;
|
|
153
|
+
};
|
|
154
|
+
epic?: {
|
|
155
|
+
id: string;
|
|
156
|
+
title: string;
|
|
157
|
+
epicNumber?: number;
|
|
158
|
+
};
|
|
159
|
+
ticket?: {
|
|
160
|
+
id: string;
|
|
161
|
+
title: string;
|
|
162
|
+
ticketNumber: number;
|
|
163
|
+
status?: string;
|
|
164
|
+
};
|
|
165
|
+
implementationSession?: {
|
|
166
|
+
id: string;
|
|
167
|
+
status: string;
|
|
168
|
+
startedAt: string;
|
|
169
|
+
specificationId: string;
|
|
170
|
+
completedTickets?: string[];
|
|
171
|
+
failedTickets?: string[];
|
|
172
|
+
skippedTickets?: string[];
|
|
173
|
+
totalTickets?: number;
|
|
174
|
+
currentTicket?: {
|
|
175
|
+
id: string;
|
|
176
|
+
title: string;
|
|
177
|
+
ticketNumber: number;
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* API response from list_tickets
|
|
183
|
+
*/
|
|
184
|
+
export interface ListTicketsApiResponse {
|
|
185
|
+
tickets: Array<{
|
|
186
|
+
id: string;
|
|
187
|
+
title: string;
|
|
188
|
+
ticketNumber: number;
|
|
189
|
+
priority: string;
|
|
190
|
+
status: string;
|
|
191
|
+
epicTitle?: string;
|
|
192
|
+
}>;
|
|
193
|
+
total: number;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Format a ticket number with padding
|
|
197
|
+
* @param ticketNumber The ticket number
|
|
198
|
+
* @param prefix The prefix (default: "TKT")
|
|
199
|
+
* @param padding The padding length (default: 3)
|
|
200
|
+
*/
|
|
201
|
+
export declare function formatTicketNumber(ticketNumber: number, prefix?: string, padding?: number): string;
|
|
202
|
+
/**
|
|
203
|
+
* Format duration from ISO timestamp to human-readable string
|
|
204
|
+
* @param startedAt ISO timestamp string
|
|
205
|
+
*/
|
|
206
|
+
export declare function formatDuration(startedAt: string): string;
|
|
207
|
+
/**
|
|
208
|
+
* Check if working context has any data
|
|
209
|
+
*/
|
|
210
|
+
export declare function hasWorkingContext(context: WorkingContext): boolean;
|
|
211
|
+
/**
|
|
212
|
+
* Check if session has any activity
|
|
213
|
+
*/
|
|
214
|
+
export declare function hasSessionActivity(session: ImplementationSession): boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Calculate session progress percentage
|
|
217
|
+
*/
|
|
218
|
+
export declare function calculateSessionProgress(session: ImplementationSession): number;
|
|
219
|
+
/**
|
|
220
|
+
* Transform API response to StatusResponse
|
|
221
|
+
*/
|
|
222
|
+
export declare function transformApiResponse(contextResponse: WorkingContextApiResponse, ticketsResponse?: ListTicketsApiResponse): StatusResponse;
|
|
223
|
+
/**
|
|
224
|
+
* Dashboard data for comprehensive project analytics view
|
|
225
|
+
*/
|
|
226
|
+
export interface DashboardData {
|
|
227
|
+
project: {
|
|
228
|
+
id: string;
|
|
229
|
+
name: string;
|
|
230
|
+
updatedAt: string;
|
|
231
|
+
};
|
|
232
|
+
specification: {
|
|
233
|
+
id: string;
|
|
234
|
+
title: string;
|
|
235
|
+
status: string;
|
|
236
|
+
};
|
|
237
|
+
/** Overall progress metrics */
|
|
238
|
+
overallProgress: OverallProgress;
|
|
239
|
+
/** Time-related metrics and projections */
|
|
240
|
+
timeMetrics: TimeMetrics;
|
|
241
|
+
/** Breakdown by specification */
|
|
242
|
+
specifications: SpecificationProgress[];
|
|
243
|
+
/** Epic status within current specification */
|
|
244
|
+
epics: EpicProgress[];
|
|
245
|
+
/** Ticket priority distribution */
|
|
246
|
+
priorityDistribution: PriorityDistribution;
|
|
247
|
+
/** Ticket complexity distribution */
|
|
248
|
+
complexityDistribution: ComplexityDistribution;
|
|
249
|
+
/** Active implementation session (if any) */
|
|
250
|
+
session?: DashboardSession;
|
|
251
|
+
/** Next actionable tickets */
|
|
252
|
+
nextActionable: NextActionableTicket[];
|
|
253
|
+
/** Blocked tickets */
|
|
254
|
+
blockers: BlockerInfo[];
|
|
255
|
+
/** Failed tickets */
|
|
256
|
+
failedTickets: FailedTicketInfo[];
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Overall progress metrics
|
|
260
|
+
*/
|
|
261
|
+
export interface OverallProgress {
|
|
262
|
+
total: number;
|
|
263
|
+
completed: number;
|
|
264
|
+
inProgress: number;
|
|
265
|
+
pending: number;
|
|
266
|
+
failed: number;
|
|
267
|
+
blocked: number;
|
|
268
|
+
percentComplete: number;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Time metrics and projections
|
|
272
|
+
*/
|
|
273
|
+
export interface TimeMetrics {
|
|
274
|
+
estimatedHours: number;
|
|
275
|
+
actualHours: number;
|
|
276
|
+
remainingHours: number;
|
|
277
|
+
velocityPerDay: number;
|
|
278
|
+
avgHoursPerTicket: number;
|
|
279
|
+
onTrack: boolean;
|
|
280
|
+
estimatedCompletion: string;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Specification progress summary
|
|
284
|
+
*/
|
|
285
|
+
export interface SpecificationProgress {
|
|
286
|
+
id: string;
|
|
287
|
+
title: string;
|
|
288
|
+
completed: number;
|
|
289
|
+
total: number;
|
|
290
|
+
percentComplete: number;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Epic progress summary
|
|
294
|
+
*/
|
|
295
|
+
export interface EpicProgress {
|
|
296
|
+
id: string;
|
|
297
|
+
code: string;
|
|
298
|
+
title: string;
|
|
299
|
+
completed: number;
|
|
300
|
+
total: number;
|
|
301
|
+
percentComplete: number;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Ticket priority distribution
|
|
305
|
+
*/
|
|
306
|
+
export interface PriorityDistribution {
|
|
307
|
+
critical: number;
|
|
308
|
+
high: number;
|
|
309
|
+
medium: number;
|
|
310
|
+
low: number;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Ticket complexity distribution
|
|
314
|
+
*/
|
|
315
|
+
export interface ComplexityDistribution {
|
|
316
|
+
xs: number;
|
|
317
|
+
s: number;
|
|
318
|
+
m: number;
|
|
319
|
+
l: number;
|
|
320
|
+
xl: number;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Dashboard session info
|
|
324
|
+
*/
|
|
325
|
+
export interface DashboardSession {
|
|
326
|
+
status: string;
|
|
327
|
+
duration: string;
|
|
328
|
+
mode: string;
|
|
329
|
+
currentTicket?: {
|
|
330
|
+
id: string;
|
|
331
|
+
title: string;
|
|
332
|
+
ticketNumber: number;
|
|
333
|
+
};
|
|
334
|
+
completed: number;
|
|
335
|
+
failed: number;
|
|
336
|
+
skipped: number;
|
|
337
|
+
total: number;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Next actionable ticket in dashboard
|
|
341
|
+
*/
|
|
342
|
+
export interface NextActionableTicket {
|
|
343
|
+
id: string;
|
|
344
|
+
ticketNumber: number;
|
|
345
|
+
title: string;
|
|
346
|
+
priority: string;
|
|
347
|
+
complexity: string;
|
|
348
|
+
estimatedHours: number;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Blocker information
|
|
352
|
+
*/
|
|
353
|
+
export interface BlockerInfo {
|
|
354
|
+
ticket: {
|
|
355
|
+
id: string;
|
|
356
|
+
ticketNumber: number;
|
|
357
|
+
title: string;
|
|
358
|
+
};
|
|
359
|
+
blockedBy?: {
|
|
360
|
+
id: string;
|
|
361
|
+
ticketNumber: number;
|
|
362
|
+
title: string;
|
|
363
|
+
status: string;
|
|
364
|
+
};
|
|
365
|
+
reason?: string;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Failed ticket information
|
|
369
|
+
*/
|
|
370
|
+
export interface FailedTicketInfo {
|
|
371
|
+
ticket: {
|
|
372
|
+
id: string;
|
|
373
|
+
ticketNumber: number;
|
|
374
|
+
title: string;
|
|
375
|
+
};
|
|
376
|
+
reason?: string;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Transform API response to DashboardData
|
|
380
|
+
*/
|
|
381
|
+
export declare function transformToDashboardData(contextResponse: WorkingContextApiResponse, dashboardResponse: any): DashboardData;
|
|
382
|
+
//# sourceMappingURL=status.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.types.ts"],"names":[],"mappings":"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"}
|