@specforge/canary-cli 0.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 +781 -0
- package/bin/specforge +21 -0
- package/dist/channel.d.ts +27 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +22 -0
- package/dist/channel.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 +186 -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 +82 -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 +96 -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 +14 -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 +78 -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 +91 -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 +86 -0
- package/dist/cli/commands/debug/tools.js.map +1 -0
- package/dist/cli/commands/debug/types.d.ts +119 -0
- package/dist/cli/commands/debug/types.d.ts.map +1 -0
- package/dist/cli/commands/debug/types.js +36 -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 +131 -0
- package/dist/cli/commands/debug/whoami.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 +413 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/doctor.types.d.ts +180 -0
- package/dist/cli/commands/doctor.types.d.ts.map +1 -0
- package/dist/cli/commands/doctor.types.js +140 -0
- package/dist/cli/commands/doctor.types.js.map +1 -0
- package/dist/cli/commands/feedback.d.ts +27 -0
- package/dist/cli/commands/feedback.d.ts.map +1 -0
- package/dist/cli/commands/feedback.js +262 -0
- package/dist/cli/commands/feedback.js.map +1 -0
- package/dist/cli/commands/feedback.types.d.ts +116 -0
- package/dist/cli/commands/feedback.types.d.ts.map +1 -0
- package/dist/cli/commands/feedback.types.js +65 -0
- package/dist/cli/commands/feedback.types.js.map +1 -0
- package/dist/cli/commands/index.d.ts +15 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +21 -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 +773 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/init.types.d.ts +193 -0
- package/dist/cli/commands/init.types.d.ts.map +1 -0
- package/dist/cli/commands/init.types.js +29 -0
- package/dist/cli/commands/init.types.js.map +1 -0
- package/dist/cli/commands/invitations.d.ts +31 -0
- package/dist/cli/commands/invitations.d.ts.map +1 -0
- package/dist/cli/commands/invitations.js +250 -0
- package/dist/cli/commands/invitations.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 +139 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/members.d.ts +55 -0
- package/dist/cli/commands/members.d.ts.map +1 -0
- package/dist/cli/commands/members.js +296 -0
- package/dist/cli/commands/members.js.map +1 -0
- package/dist/cli/commands/scaffold/agent-types.d.ts +54 -0
- package/dist/cli/commands/scaffold/agent-types.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/agent-types.js +22 -0
- package/dist/cli/commands/scaffold/agent-types.js.map +1 -0
- package/dist/cli/commands/scaffold/display.d.ts +56 -0
- package/dist/cli/commands/scaffold/display.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/display.js +217 -0
- package/dist/cli/commands/scaffold/display.js.map +1 -0
- package/dist/cli/commands/scaffold/files.d.ts +99 -0
- package/dist/cli/commands/scaffold/files.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/files.js +122 -0
- package/dist/cli/commands/scaffold/files.js.map +1 -0
- package/dist/cli/commands/scaffold/index.d.ts +13 -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 +11 -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 +728 -0
- package/dist/cli/commands/scaffold/scaffold.js.map +1 -0
- package/dist/cli/commands/scaffold/targets.d.ts +60 -0
- package/dist/cli/commands/scaffold/targets.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/targets.js +251 -0
- package/dist/cli/commands/scaffold/targets.js.map +1 -0
- package/dist/cli/commands/scaffold/types.d.ts +170 -0
- package/dist/cli/commands/scaffold/types.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/types.js +12 -0
- package/dist/cli/commands/scaffold/types.js.map +1 -0
- package/dist/cli/commands/scaffold/utils.d.ts +89 -0
- package/dist/cli/commands/scaffold/utils.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/utils.js +401 -0
- package/dist/cli/commands/scaffold/utils.js.map +1 -0
- package/dist/cli/commands/status.d.ts +19 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +124 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/status.types.d.ts +37 -0
- package/dist/cli/commands/status.types.d.ts.map +1 -0
- package/dist/cli/commands/status.types.js +7 -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 +134 -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 +46 -0
- package/dist/cli/commands/switch.types.js.map +1 -0
- package/dist/cli/config/agent-teams.types.d.ts +120 -0
- package/dist/cli/config/agent-teams.types.d.ts.map +1 -0
- package/dist/cli/config/agent-teams.types.js +23 -0
- package/dist/cli/config/agent-teams.types.js.map +1 -0
- package/dist/cli/config/index.d.ts +13 -0
- package/dist/cli/config/index.d.ts.map +1 -0
- package/dist/cli/config/index.js +7 -0
- package/dist/cli/config/index.js.map +1 -0
- package/dist/cli/config/loader.d.ts +114 -0
- package/dist/cli/config/loader.d.ts.map +1 -0
- package/dist/cli/config/loader.js +198 -0
- package/dist/cli/config/loader.js.map +1 -0
- package/dist/cli/config/paths.d.ts +107 -0
- package/dist/cli/config/paths.d.ts.map +1 -0
- package/dist/cli/config/paths.js +79 -0
- package/dist/cli/config/paths.js.map +1 -0
- package/dist/cli/config/planning-sessions-registry.d.ts +52 -0
- package/dist/cli/config/planning-sessions-registry.d.ts.map +1 -0
- package/dist/cli/config/planning-sessions-registry.js +46 -0
- package/dist/cli/config/planning-sessions-registry.js.map +1 -0
- package/dist/cli/config/types.d.ts +186 -0
- package/dist/cli/config/types.d.ts.map +1 -0
- package/dist/cli/config/types.js +27 -0
- package/dist/cli/config/types.js.map +1 -0
- package/dist/cli/config/validation.d.ts +62 -0
- package/dist/cli/config/validation.d.ts.map +1 -0
- package/dist/cli/config/validation.js +133 -0
- package/dist/cli/config/validation.js.map +1 -0
- package/dist/cli/config/writer.d.ts +153 -0
- package/dist/cli/config/writer.d.ts.map +1 -0
- package/dist/cli/config/writer.js +168 -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 +142 -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 +97 -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 +139 -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 +3 -0
- package/dist/cli/middleware/index.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.d.ts +9 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.js +160 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts +9 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.js +343 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.d.ts +9 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.js +254 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.js.map +1 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.d.ts +8 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.js +128 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.js.map +1 -0
- package/dist/cli/templates/agents/index.d.ts +23 -0
- package/dist/cli/templates/agents/index.d.ts.map +1 -0
- package/dist/cli/templates/agents/index.js +29 -0
- package/dist/cli/templates/agents/index.js.map +1 -0
- package/dist/cli/templates/commands.d.ts +17 -0
- package/dist/cli/templates/commands.d.ts.map +1 -0
- package/dist/cli/templates/commands.js +78 -0
- package/dist/cli/templates/commands.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 +69 -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 +79 -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 +63 -0
- package/dist/cli/templates/content/sf-context.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 +42 -0
- package/dist/cli/templates/content/sf-help.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 +62 -0
- package/dist/cli/templates/content/sf-init.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 +67 -0
- package/dist/cli/templates/content/sf-reset.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 +63 -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 +62 -0
- package/dist/cli/templates/content/sf-status.js.map +1 -0
- package/dist/cli/templates/index.d.ts +8 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +17 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/ui/banner.d.ts +38 -0
- package/dist/cli/ui/banner.d.ts.map +1 -0
- package/dist/cli/ui/banner.js +89 -0
- package/dist/cli/ui/banner.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 +67 -0
- package/dist/cli/ui/colors.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 +4 -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 +83 -0
- package/dist/cli/ui/output.js.map +1 -0
- package/dist/cli/ui/spinner.d.ts +120 -0
- package/dist/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cli/ui/spinner.js +158 -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 +119 -0
- package/dist/cli/ui/time.js.map +1 -0
- package/dist/client/api-client.d.ts +123 -0
- package/dist/client/api-client.d.ts.map +1 -0
- package/dist/client/api-client.js +105 -0
- package/dist/client/api-client.js.map +1 -0
- package/dist/client/cli-client.d.ts +26 -0
- package/dist/client/cli-client.d.ts.map +1 -0
- package/dist/client/cli-client.js +20 -0
- package/dist/client/cli-client.js.map +1 -0
- package/dist/config/index.d.ts +78 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +79 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/format.d.ts +126 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +71 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/index.d.ts +11 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +45 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/monorepo-detector.d.ts +31 -0
- package/dist/lib/monorepo-detector.d.ts.map +1 -0
- package/dist/lib/monorepo-detector.js +188 -0
- package/dist/lib/monorepo-detector.js.map +1 -0
- package/dist/lib/prompt-generator.d.ts +65 -0
- package/dist/lib/prompt-generator.d.ts.map +1 -0
- package/dist/lib/prompt-generator.js +162 -0
- package/dist/lib/prompt-generator.js.map +1 -0
- package/dist/lib/strategy-analyzer.d.ts +59 -0
- package/dist/lib/strategy-analyzer.d.ts.map +1 -0
- package/dist/lib/strategy-analyzer.js +91 -0
- package/dist/lib/strategy-analyzer.js.map +1 -0
- package/dist/lib/workflow-definitions.d.ts +41 -0
- package/dist/lib/workflow-definitions.d.ts.map +1 -0
- package/dist/lib/workflow-definitions.js +497 -0
- package/dist/lib/workflow-definitions.js.map +1 -0
- package/dist/patterns/index.d.ts +9 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +21 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/inheritance.d.ts +193 -0
- package/dist/patterns/inheritance.d.ts.map +1 -0
- package/dist/patterns/inheritance.js +125 -0
- package/dist/patterns/inheritance.js.map +1 -0
- package/dist/server.d.ts +44 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +91 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/core/context-helper.d.ts +50 -0
- package/dist/tools/core/context-helper.d.ts.map +1 -0
- package/dist/tools/core/context-helper.js +49 -0
- package/dist/tools/core/context-helper.js.map +1 -0
- package/dist/tools/core/index.d.ts +2 -0
- package/dist/tools/core/index.d.ts.map +1 -0
- package/dist/tools/core/index.js +2 -0
- package/dist/tools/core/index.js.map +1 -0
- package/dist/tools/index.d.ts +58 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1499 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/transport/__tests__/resolve-endpoint.test.d.ts +6 -0
- package/dist/transport/__tests__/resolve-endpoint.test.d.ts.map +1 -0
- package/dist/transport/index.d.ts +6 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +5 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/interface.d.ts +25 -0
- package/dist/transport/interface.d.ts.map +1 -0
- package/dist/transport/interface.js +1 -0
- package/dist/transport/interface.js.map +1 -0
- package/dist/transport/remote.d.ts +38 -0
- package/dist/transport/remote.d.ts.map +1 -0
- package/dist/transport/remote.js +107 -0
- package/dist/transport/remote.js.map +1 -0
- package/dist/transport/resolve-endpoint.d.ts +58 -0
- package/dist/transport/resolve-endpoint.d.ts.map +1 -0
- package/dist/transport/resolve-endpoint.js +146 -0
- package/dist/transport/resolve-endpoint.js.map +1 -0
- package/dist/types/index.d.ts +212 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/validation/index.d.ts +86 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +392 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/ticket-validation.d.ts +162 -0
- package/dist/validation/ticket-validation.d.ts.map +1 -0
- package/dist/validation/ticket-validation.js +188 -0
- package/dist/validation/ticket-validation.js.map +1 -0
- package/node_modules/@specforge/types/dist/api/bulk.d.ts +133 -0
- package/node_modules/@specforge/types/dist/api/bulk.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/api/bulk.js +7 -0
- package/node_modules/@specforge/types/dist/api/bulk.js.map +1 -0
- package/node_modules/@specforge/types/dist/api/feedback.d.ts +22 -0
- package/node_modules/@specforge/types/dist/api/feedback.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/api/feedback.js +5 -0
- package/node_modules/@specforge/types/dist/api/feedback.js.map +1 -0
- package/node_modules/@specforge/types/dist/api/index.d.ts +6 -0
- package/node_modules/@specforge/types/dist/api/index.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/api/index.js +6 -0
- package/node_modules/@specforge/types/dist/api/index.js.map +1 -0
- package/node_modules/@specforge/types/dist/api/lists.d.ts +55 -0
- package/node_modules/@specforge/types/dist/api/lists.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/api/lists.js +8 -0
- package/node_modules/@specforge/types/dist/api/lists.js.map +1 -0
- package/node_modules/@specforge/types/dist/api/lookups.d.ts +92 -0
- package/node_modules/@specforge/types/dist/api/lookups.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/api/lookups.js +2 -0
- package/node_modules/@specforge/types/dist/api/lookups.js.map +1 -0
- package/node_modules/@specforge/types/dist/api/responses.d.ts +92 -0
- package/node_modules/@specforge/types/dist/api/responses.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/api/responses.js +9 -0
- package/node_modules/@specforge/types/dist/api/responses.js.map +1 -0
- package/node_modules/@specforge/types/dist/index.d.ts +4 -0
- package/node_modules/@specforge/types/dist/index.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/index.js +4 -0
- package/node_modules/@specforge/types/dist/index.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/index.d.ts +2 -0
- package/node_modules/@specforge/types/dist/mcp/index.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/index.js +2 -0
- package/node_modules/@specforge/types/dist/mcp/index.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-planning-session.d.ts +44 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-planning-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-planning-session.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-planning-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-review-session.d.ts +68 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-review-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-review-session.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-review-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-work-session.d.ts +133 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-work-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-work-session.js +8 -0
- package/node_modules/@specforge/types/dist/mcp/tools/action-work-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-planning-session.d.ts +21 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-planning-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-planning-session.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-planning-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-review-session.d.ts +21 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-review-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-review-session.js +8 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-review-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-work-session.d.ts +42 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-work-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-work-session.js +8 -0
- package/node_modules/@specforge/types/dist/mcp/tools/complete-work-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/create-specification.d.ts +21 -0
- package/node_modules/@specforge/types/dist/mcp/tools/create-specification.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/create-specification.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/create-specification.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/feedback.d.ts +59 -0
- package/node_modules/@specforge/types/dist/mcp/tools/feedback.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/feedback.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/feedback.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-blocked-tickets.d.ts +33 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-blocked-tickets.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-blocked-tickets.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-blocked-tickets.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-critical-path.d.ts +15 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-critical-path.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-critical-path.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-critical-path.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-dependency-tree.d.ts +15 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-dependency-tree.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-dependency-tree.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-dependency-tree.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-next-actionable-tickets.d.ts +28 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-next-actionable-tickets.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-next-actionable-tickets.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-next-actionable-tickets.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-report.d.ts +44 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-report.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-report.js +8 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get-report.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get.d.ts +23 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/get.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/index.d.ts +23 -0
- package/node_modules/@specforge/types/dist/mcp/tools/index.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/index.js +23 -0
- package/node_modules/@specforge/types/dist/mcp/tools/index.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/link-pull-request.d.ts +27 -0
- package/node_modules/@specforge/types/dist/mcp/tools/link-pull-request.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/link-pull-request.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/link-pull-request.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/list.d.ts +23 -0
- package/node_modules/@specforge/types/dist/mcp/tools/list.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/list.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/list.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reopen-specification.d.ts +14 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reopen-specification.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reopen-specification.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reopen-specification.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reset-work-session.d.ts +35 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reset-work-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reset-work-session.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/reset-work-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/search.d.ts +47 -0
- package/node_modules/@specforge/types/dist/mcp/tools/search.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/search.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/search.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-planning-session.d.ts +20 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-planning-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-planning-session.js +5 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-planning-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-review-session.d.ts +17 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-review-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-review-session.js +8 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-review-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-work-session.d.ts +16 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-work-session.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-work-session.js +7 -0
- package/node_modules/@specforge/types/dist/mcp/tools/start-work-session.js.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/epic.d.ts +105 -0
- package/node_modules/@specforge/types/dist/runtime/epic.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/epic.js +10 -0
- package/node_modules/@specforge/types/dist/runtime/epic.js.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/index.d.ts +11 -0
- package/node_modules/@specforge/types/dist/runtime/index.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/index.js +11 -0
- package/node_modules/@specforge/types/dist/runtime/index.js.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/project.d.ts +22 -0
- package/node_modules/@specforge/types/dist/runtime/project.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/project.js +9 -0
- package/node_modules/@specforge/types/dist/runtime/project.js.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/specification.d.ts +111 -0
- package/node_modules/@specforge/types/dist/runtime/specification.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/specification.js +10 -0
- package/node_modules/@specforge/types/dist/runtime/specification.js.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/ticket.d.ts +80 -0
- package/node_modules/@specforge/types/dist/runtime/ticket.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/runtime/ticket.js +12 -0
- package/node_modules/@specforge/types/dist/runtime/ticket.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/blueprint.d.ts +18 -0
- package/node_modules/@specforge/types/dist/schema/blueprint.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/blueprint.js +3 -0
- package/node_modules/@specforge/types/dist/schema/blueprint.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/epic.d.ts +28 -0
- package/node_modules/@specforge/types/dist/schema/epic.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/epic.js +3 -0
- package/node_modules/@specforge/types/dist/schema/epic.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/extensions/epic.extensions.d.ts +2 -0
- package/node_modules/@specforge/types/dist/schema/extensions/epic.extensions.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/extensions/epic.extensions.js +4 -0
- package/node_modules/@specforge/types/dist/schema/extensions/epic.extensions.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/extensions/specification.extensions.d.ts +6 -0
- package/node_modules/@specforge/types/dist/schema/extensions/specification.extensions.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/extensions/specification.extensions.js +3 -0
- package/node_modules/@specforge/types/dist/schema/extensions/specification.extensions.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/extensions/ticket.extensions.d.ts +6 -0
- package/node_modules/@specforge/types/dist/schema/extensions/ticket.extensions.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/extensions/ticket.extensions.js +3 -0
- package/node_modules/@specforge/types/dist/schema/extensions/ticket.extensions.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/index.d.ts +7 -0
- package/node_modules/@specforge/types/dist/schema/index.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/index.js +7 -0
- package/node_modules/@specforge/types/dist/schema/index.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/patterns.d.ts +6 -0
- package/node_modules/@specforge/types/dist/schema/patterns.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/patterns.js +3 -0
- package/node_modules/@specforge/types/dist/schema/patterns.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/project.d.ts +7 -0
- package/node_modules/@specforge/types/dist/schema/project.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/project.js +3 -0
- package/node_modules/@specforge/types/dist/schema/project.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/specification.d.ts +35 -0
- package/node_modules/@specforge/types/dist/schema/specification.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/specification.js +3 -0
- package/node_modules/@specforge/types/dist/schema/specification.js.map +1 -0
- package/node_modules/@specforge/types/dist/schema/ticket.d.ts +69 -0
- package/node_modules/@specforge/types/dist/schema/ticket.d.ts.map +1 -0
- package/node_modules/@specforge/types/dist/schema/ticket.js +3 -0
- package/node_modules/@specforge/types/dist/schema/ticket.js.map +1 -0
- package/node_modules/@specforge/types/package.json +69 -0
- package/package.json +76 -0
- package/src/cli/templates/agents/content/core/sfag-orchestrator.ts +165 -0
- package/src/cli/templates/agents/content/core/sfag-spec-creator.ts +348 -0
- package/src/cli/templates/agents/content/core/sfag-ticket-implementer.ts +259 -0
- package/src/cli/templates/agents/content/research/sfag-package-researcher.ts +132 -0
- package/src/cli/templates/agents/index.ts +47 -0
- package/src/cli/templates/commands.ts +90 -0
- package/src/cli/templates/content/sf-blockers.ts +71 -0
- package/src/cli/templates/content/sf-commit.ts +81 -0
- package/src/cli/templates/content/sf-context.ts +65 -0
- package/src/cli/templates/content/sf-help.ts +44 -0
- package/src/cli/templates/content/sf-init.ts +64 -0
- package/src/cli/templates/content/sf-reset.ts +69 -0
- package/src/cli/templates/content/sf-search.ts +65 -0
- package/src/cli/templates/content/sf-status.ts +64 -0
- package/src/cli/templates/index.ts +16 -0
- package/src/cli/templates/skills/specforge-conventions.md +114 -0
- package/src/cli/templates/skills/specforge-orchestrator.md +409 -0
- package/src/cli/templates/skills/specforge-validator.md +128 -0
- package/src/cli/templates/skills/specforge-worker.md +412 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const SF_STATUS_CONTENT = `# Implementation Status (SpecForge)
|
|
2
|
+
|
|
3
|
+
Display comprehensive implementation status with consolidated progress view.
|
|
4
|
+
|
|
5
|
+
## Arguments
|
|
6
|
+
- \`$ARGUMENTS\` - Optional: Specification ID to view status for
|
|
7
|
+
|
|
8
|
+
## Task
|
|
9
|
+
|
|
10
|
+
### 1. Get Specification Context
|
|
11
|
+
|
|
12
|
+
**Logic:**
|
|
13
|
+
\`\`\`typescript
|
|
14
|
+
// Read project config
|
|
15
|
+
const config = readFile('.specforge.json')
|
|
16
|
+
const specificationId = $ARGUMENTS || config.activeSpecification?.id
|
|
17
|
+
\`\`\`
|
|
18
|
+
|
|
19
|
+
### 2. Load Implementation Data
|
|
20
|
+
|
|
21
|
+
**MCP Calls:**
|
|
22
|
+
\`\`\`typescript
|
|
23
|
+
get_specification(specificationId)
|
|
24
|
+
list_epics({ specificationId })
|
|
25
|
+
list_tickets({ specificationId })
|
|
26
|
+
\`\`\`
|
|
27
|
+
|
|
28
|
+
### 3. Display Status Overview
|
|
29
|
+
|
|
30
|
+
**Output:**
|
|
31
|
+
\`\`\`
|
|
32
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
33
|
+
IMPLEMENTATION STATUS
|
|
34
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
35
|
+
Specification: {title}
|
|
36
|
+
Progress: {done}/{total} ({percentage}%)
|
|
37
|
+
|
|
38
|
+
EPICS
|
|
39
|
+
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
40
|
+
E{n} \u2502 {title} \u2502 {progress}% \u2502 {status}
|
|
41
|
+
|
|
42
|
+
READY TICKETS
|
|
43
|
+
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
44
|
+
E{n}-T{m} \u2502 {title} \u2502 {priority}
|
|
45
|
+
|
|
46
|
+
BLOCKED TICKETS
|
|
47
|
+
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
48
|
+
E{n}-T{m} \u2502 {title} \u2502 Blocked by: {dependencies}
|
|
49
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
50
|
+
|
|
51
|
+
Next: Run /sf-next to start implementation
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
## Notes
|
|
55
|
+
- Shows overall progress and epic breakdown
|
|
56
|
+
- Lists ready and blocked tickets
|
|
57
|
+
- Use /sf-validate for system health check
|
|
58
|
+
`;
|
|
59
|
+
export {
|
|
60
|
+
SF_STATUS_CONTENT
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=sf-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/templates/content/sf-status.ts"],"sourcesContent":["/**\n * SF-Status Command Template\n *\n * Template for displaying implementation status with consolidated tools.\n */\n\nexport const SF_STATUS_CONTENT = `# Implementation Status (SpecForge)\n\nDisplay comprehensive implementation status with consolidated progress view.\n\n## Arguments\n- \\`$ARGUMENTS\\` - Optional: Specification ID to view status for\n\n## Task\n\n### 1. Get Specification Context\n\n**Logic:**\n\\`\\`\\`typescript\n// Read project config\nconst config = readFile('.specforge.json')\nconst specificationId = $ARGUMENTS || config.activeSpecification?.id\n\\`\\`\\`\n\n### 2. Load Implementation Data\n\n**MCP Calls:**\n\\`\\`\\`typescript\nget_specification(specificationId)\nlist_epics({ specificationId })\nlist_tickets({ specificationId })\n\\`\\`\\`\n\n### 3. Display Status Overview\n\n**Output:**\n\\`\\`\\`\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nIMPLEMENTATION STATUS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nSpecification: {title}\nProgress: {done}/{total} ({percentage}%)\n\nEPICS\n─────────────────────────────────────────────────────────────────\nE{n} │ {title} │ {progress}% │ {status}\n\nREADY TICKETS\n─────────────────────────────────────────────────────────────────\nE{n}-T{m} │ {title} │ {priority}\n\nBLOCKED TICKETS\n─────────────────────────────────────────────────────────────────\nE{n}-T{m} │ {title} │ Blocked by: {dependencies}\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nNext: Run /sf-next to start implementation\n\\`\\`\\`\n\n## Notes\n- Shows overall progress and epic breakdown\n- Lists ready and blocked tickets\n- Use /sf-validate for system health check\n`;\n"],"mappings":"AAMO,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Templates Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all template functions for command and agent scaffolding.
|
|
5
|
+
*/
|
|
6
|
+
export { getCommandTemplates, getCommandTemplate, getCommandsByCategory } from './commands.js';
|
|
7
|
+
export { getAgentTemplates, getAgentTemplate, getAgentsByCategory, getAgentNames, } from './agents/index.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG/F,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getCommandTemplates, getCommandTemplate, getCommandsByCategory } from "./commands.js";
|
|
2
|
+
import {
|
|
3
|
+
getAgentTemplates,
|
|
4
|
+
getAgentTemplate,
|
|
5
|
+
getAgentsByCategory,
|
|
6
|
+
getAgentNames
|
|
7
|
+
} from "./agents/index.js";
|
|
8
|
+
export {
|
|
9
|
+
getAgentNames,
|
|
10
|
+
getAgentTemplate,
|
|
11
|
+
getAgentTemplates,
|
|
12
|
+
getAgentsByCategory,
|
|
13
|
+
getCommandTemplate,
|
|
14
|
+
getCommandTemplates,
|
|
15
|
+
getCommandsByCategory
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/templates/index.ts"],"sourcesContent":["/**\n * Templates Module\n *\n * Exports all template functions for command and agent scaffolding.\n */\n\n// Command templates\nexport { getCommandTemplates, getCommandTemplate, getCommandsByCategory } from './commands.js';\n\n// Agent templates\nexport {\n getAgentTemplates,\n getAgentTemplate,\n getAgentsByCategory,\n getAgentNames,\n} from './agents/index.js';\n"],"mappings":"AAOA,SAAS,qBAAqB,oBAAoB,6BAA6B;AAG/E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecForge CLI Banner
|
|
3
|
+
* Purple/Violet themed ASCII art matching brand identity
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* import { printBanner } from './banner.js'
|
|
7
|
+
* printBanner('figlet') // startup / --help
|
|
8
|
+
* printBanner('compact') // every command
|
|
9
|
+
*/
|
|
10
|
+
export declare const ANSI_RESET = "\u001B[0m";
|
|
11
|
+
export declare const ANSI_BOLD = "\u001B[1m";
|
|
12
|
+
export declare const ANSI_DIM = "\u001B[2m";
|
|
13
|
+
export declare const BRAND_PALETTE: {
|
|
14
|
+
readonly purpleDark: string;
|
|
15
|
+
readonly purple: string;
|
|
16
|
+
readonly violet: string;
|
|
17
|
+
readonly lilac: string;
|
|
18
|
+
readonly pink: string;
|
|
19
|
+
readonly gray: string;
|
|
20
|
+
readonly darkGray: string;
|
|
21
|
+
readonly white: string;
|
|
22
|
+
readonly g1: string;
|
|
23
|
+
readonly g2: string;
|
|
24
|
+
readonly g3: string;
|
|
25
|
+
readonly g4: string;
|
|
26
|
+
readonly g5: string;
|
|
27
|
+
readonly g6: string;
|
|
28
|
+
readonly g7: string;
|
|
29
|
+
readonly g8: string;
|
|
30
|
+
};
|
|
31
|
+
interface PrintBannerOptions {
|
|
32
|
+
noColor?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare function printBanner(variant?: string, options?: PrintBannerOptions): void;
|
|
35
|
+
export declare function getBanner(variant?: string): string;
|
|
36
|
+
export declare function listVariants(): string[];
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,eAAO,MAAM,UAAU,cAAY,CAAC;AACpC,eAAO,MAAM,SAAS,cAAY,CAAC;AACnC,eAAO,MAAM,QAAQ,cAAY,CAAC;AAKlC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAkBhB,CAAC;AAuDX,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,MAAiB,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAQ9F;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,MAAiB,GAAG,MAAM,CAE5D;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
const fg = (code) => `\x1B[38;5;${code}m`;
|
|
3
|
+
const ANSI_RESET = "\x1B[0m";
|
|
4
|
+
const ANSI_BOLD = "\x1B[1m";
|
|
5
|
+
const ANSI_DIM = "\x1B[2m";
|
|
6
|
+
const RESET = ANSI_RESET;
|
|
7
|
+
const BOLD = ANSI_BOLD;
|
|
8
|
+
const BRAND_PALETTE = {
|
|
9
|
+
purpleDark: fg(54),
|
|
10
|
+
purple: fg(135),
|
|
11
|
+
violet: fg(141),
|
|
12
|
+
lilac: fg(183),
|
|
13
|
+
pink: fg(212),
|
|
14
|
+
gray: fg(245),
|
|
15
|
+
darkGray: fg(240),
|
|
16
|
+
white: fg(255),
|
|
17
|
+
// Gradient stops
|
|
18
|
+
g1: fg(93),
|
|
19
|
+
g2: fg(99),
|
|
20
|
+
g3: fg(105),
|
|
21
|
+
g4: fg(111),
|
|
22
|
+
g5: fg(129),
|
|
23
|
+
g6: fg(135),
|
|
24
|
+
g7: fg(141),
|
|
25
|
+
g8: fg(147)
|
|
26
|
+
};
|
|
27
|
+
const C = BRAND_PALETTE;
|
|
28
|
+
const require2 = createRequire(import.meta.url);
|
|
29
|
+
const VERSION = process.env.SPECFORGE_VERSION || require2("../../../package.json").version || "0.1.0";
|
|
30
|
+
const TAGLINE = "Forge specs into working software";
|
|
31
|
+
const banners = {
|
|
32
|
+
// ─── Emerald v2 outline + </> code symbol + FIGlet ───────
|
|
33
|
+
figlet: () => `
|
|
34
|
+
${C.g1} \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588${RESET}
|
|
35
|
+
${C.g1} \u2588\u2588 \u2588\u2588${RESET}
|
|
36
|
+
${C.g2} \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588${RESET} ${C.g1}____${RESET} ${C.g5}_____${RESET}
|
|
37
|
+
${C.g3} \u2588\u2588 \u2588\u2588 \u2588 \u2588\u2588 \u2588\u2588${RESET} ${C.g2}/ ___| _ __ ___ ___ ${C.g6}| ___|__ _ __ __ _ ___${RESET}
|
|
38
|
+
${C.g4} \u2588\u2588 \u2588\u2588 \u2588 \u2588\u2588 \u2588\u2588${RESET} ${C.g2}\\___ \\| '_ \\ / _ \\/ __|${C.g6}| |_ / _ \\| '__/ _\` |/ _ \\${RESET}
|
|
39
|
+
${C.g5} \u2588\u2588 \u2588\u2588 \u2588 \u2588\u2588 \u2588\u2588${RESET} ${C.g3}___) | |_) | __/ (__ ${C.g7}| _| (_) | | | (_| | __/${RESET}
|
|
40
|
+
${C.g6} \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588${RESET} ${C.g3}|____/| .__/ \\___|\\___${C.g7} |_| \\___/|_| \\__, |\\___|${RESET}
|
|
41
|
+
${C.g6} \u2588\u2588 \u2588\u2588${RESET} ${C.g4}|_|${RESET} ${C.g8}|___/${RESET}
|
|
42
|
+
${C.g6} \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588${RESET}
|
|
43
|
+
${C.darkGray} ${TAGLINE} v${VERSION}${RESET}
|
|
44
|
+
`,
|
|
45
|
+
// ─── Compact one-liner (for every command) ───────────────
|
|
46
|
+
compact: () => `
|
|
47
|
+
${C.violet}\u2B22${RESET} ${BOLD}${C.lilac}Spec${C.pink}Forge${RESET} ${C.darkGray}v${VERSION}${RESET}
|
|
48
|
+
`,
|
|
49
|
+
// ─── Sleek box ───────────────────────────────────────────
|
|
50
|
+
sleek: () => `
|
|
51
|
+
${C.purpleDark}\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557${RESET}
|
|
52
|
+
${C.purpleDark}\u2551${RESET} ${C.purpleDark}\u2551${RESET}
|
|
53
|
+
${C.purpleDark}\u2551${RESET} ${C.violet}\u2692${RESET} ${BOLD}${C.lilac}S P E C${C.violet}F O R G E${RESET} ${C.darkGray}v${VERSION}${RESET} ${C.purpleDark}\u2551${RESET}
|
|
54
|
+
${C.purpleDark}\u2551${RESET} ${C.darkGray}${TAGLINE}${RESET} ${C.purpleDark}\u2551${RESET}
|
|
55
|
+
${C.purpleDark}\u2551${RESET} ${C.purpleDark}\u2551${RESET}
|
|
56
|
+
${C.purpleDark}\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D${RESET}
|
|
57
|
+
`,
|
|
58
|
+
// ─── Diamond icon + text ─────────────────────────────────
|
|
59
|
+
diamond: () => `
|
|
60
|
+
${C.violet} \u25C6${RESET}
|
|
61
|
+
${C.violet} \u25C7${C.lilac}\u25C6${C.violet}\u25C7${RESET} ${BOLD}${C.lilac}Spec${C.pink}Forge${RESET} ${C.darkGray}v${VERSION}${RESET}
|
|
62
|
+
${C.violet} \u25C6${RESET} ${C.darkGray}${TAGLINE}${RESET}
|
|
63
|
+
`
|
|
64
|
+
};
|
|
65
|
+
function printBanner(variant = "figlet", options = {}) {
|
|
66
|
+
const noColor = options.noColor || process.env.NO_COLOR !== void 0 || !process.stdout.isTTY;
|
|
67
|
+
const bannerFn = banners[variant] || banners.figlet;
|
|
68
|
+
let output = bannerFn();
|
|
69
|
+
if (noColor) {
|
|
70
|
+
output = output.replace(/\x1b\[[0-9;]*m/g, "");
|
|
71
|
+
}
|
|
72
|
+
process.stdout.write(output);
|
|
73
|
+
}
|
|
74
|
+
function getBanner(variant = "figlet") {
|
|
75
|
+
return (banners[variant] || banners.figlet)();
|
|
76
|
+
}
|
|
77
|
+
function listVariants() {
|
|
78
|
+
return Object.keys(banners);
|
|
79
|
+
}
|
|
80
|
+
export {
|
|
81
|
+
ANSI_BOLD,
|
|
82
|
+
ANSI_DIM,
|
|
83
|
+
ANSI_RESET,
|
|
84
|
+
BRAND_PALETTE,
|
|
85
|
+
getBanner,
|
|
86
|
+
listVariants,
|
|
87
|
+
printBanner
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/ui/banner.ts"],"sourcesContent":["/**\n * SpecForge CLI Banner\n * Purple/Violet themed ASCII art matching brand identity\n *\n * Usage:\n * import { printBanner } from './banner.js'\n * printBanner('figlet') // startup / --help\n * printBanner('compact') // every command\n */\n\nimport { createRequire } from 'node:module';\n\n// ─── ANSI 256-color helpers ───────────────────────────────\nconst fg = (code: number): string => `\\x1b[38;5;${code}m`;\nexport const ANSI_RESET = '\\x1b[0m';\nexport const ANSI_BOLD = '\\x1b[1m';\nexport const ANSI_DIM = '\\x1b[2m';\nconst RESET = ANSI_RESET;\nconst BOLD = ANSI_BOLD;\n\n// ─── Brand palette ────────────────────────────────────────\nexport const BRAND_PALETTE = {\n purpleDark: fg(54),\n purple: fg(135),\n violet: fg(141),\n lilac: fg(183),\n pink: fg(212),\n gray: fg(245),\n darkGray: fg(240),\n white: fg(255),\n // Gradient stops\n g1: fg(93),\n g2: fg(99),\n g3: fg(105),\n g4: fg(111),\n g5: fg(129),\n g6: fg(135),\n g7: fg(141),\n g8: fg(147),\n} as const;\n\nconst C = BRAND_PALETTE;\n\n// ─── Version ──────────────────────────────────────────────\nconst require = createRequire(import.meta.url);\nconst VERSION: string = process.env.SPECFORGE_VERSION || require('../../../package.json').version || '0.1.0';\nconst TAGLINE = 'Forge specs into working software';\n\n// ═══════════════════════════════════════════════════════════\n// BANNER VARIANTS\n// ═══════════════════════════════════════════════════════════\n\nconst banners: Record<string, () => string> = {\n // ─── Emerald v2 outline + </> code symbol + FIGlet ───────\n figlet: () => `\n${C.g1} █████████████████${RESET}\n${C.g1} ██ ██${RESET}\n${C.g2} ██ ██ ██ ██${RESET} ${C.g1}____${RESET} ${C.g5}_____${RESET}\n${C.g3} ██ ██ █ ██ ██${RESET} ${C.g2}/ ___| _ __ ___ ___ ${C.g6}| ___|__ _ __ __ _ ___${RESET}\n${C.g4} ██ ██ █ ██ ██${RESET} ${C.g2}\\\\___ \\\\| '_ \\\\ / _ \\\\/ __|${C.g6}| |_ / _ \\\\| '__/ _\\` |/ _ \\\\${RESET}\n${C.g5} ██ ██ █ ██ ██${RESET} ${C.g3}___) | |_) | __/ (__ ${C.g7}| _| (_) | | | (_| | __/${RESET}\n${C.g6} ██ ██ ██ ██${RESET} ${C.g3}|____/| .__/ \\\\___|\\\\___${C.g7} |_| \\\\___/|_| \\\\__, |\\\\___|${RESET}\n${C.g6} ██ ██${RESET} ${C.g4}|_|${RESET} ${C.g8}|___/${RESET}\n${C.g6} █████████████████${RESET}\n${C.darkGray} ${TAGLINE} v${VERSION}${RESET}\n`,\n\n // ─── Compact one-liner (for every command) ───────────────\n compact: () => `\n ${C.violet}⬢${RESET} ${BOLD}${C.lilac}Spec${C.pink}Forge${RESET} ${C.darkGray}v${VERSION}${RESET}\n`,\n\n // ─── Sleek box ───────────────────────────────────────────\n sleek: () => `\n ${C.purpleDark}╔══════════════════════════════════════════╗${RESET}\n ${C.purpleDark}║${RESET} ${C.purpleDark}║${RESET}\n ${C.purpleDark}║${RESET} ${C.violet}⚒${RESET} ${BOLD}${C.lilac}S P E C${C.violet}F O R G E${RESET} ${C.darkGray}v${VERSION}${RESET} ${C.purpleDark}║${RESET}\n ${C.purpleDark}║${RESET} ${C.darkGray}${TAGLINE}${RESET} ${C.purpleDark}║${RESET}\n ${C.purpleDark}║${RESET} ${C.purpleDark}║${RESET}\n ${C.purpleDark}╚══════════════════════════════════════════╝${RESET}\n`,\n\n // ─── Diamond icon + text ─────────────────────────────────\n diamond: () => `\n ${C.violet} ◆${RESET}\n ${C.violet} ◇${C.lilac}◆${C.violet}◇${RESET} ${BOLD}${C.lilac}Spec${C.pink}Forge${RESET} ${C.darkGray}v${VERSION}${RESET}\n ${C.violet} ◆${RESET} ${C.darkGray}${TAGLINE}${RESET}\n`,\n};\n\n// ═══════════════════════════════════════════════════════════\n// PUBLIC API\n// ═══════════════════════════════════════════════════════════\n\ninterface PrintBannerOptions {\n noColor?: boolean;\n}\n\nexport function printBanner(variant: string = 'figlet', options: PrintBannerOptions = {}): void {\n const noColor = options.noColor || process.env.NO_COLOR !== undefined || !process.stdout.isTTY;\n const bannerFn = banners[variant] || banners.figlet;\n let output = bannerFn();\n if (noColor) {\n output = output.replace(/\\x1b\\[[0-9;]*m/g, '');\n }\n process.stdout.write(output);\n}\n\nexport function getBanner(variant: string = 'figlet'): string {\n return (banners[variant] || banners.figlet)();\n}\n\nexport function listVariants(): string[] {\n return Object.keys(banners);\n}\n"],"mappings":"AAUA,SAAS,qBAAqB;AAG9B,MAAM,KAAK,CAAC,SAAyB,aAAa,IAAI;AAC/C,MAAM,aAAa;AACnB,MAAM,YAAY;AAClB,MAAM,WAAW;AACxB,MAAM,QAAQ;AACd,MAAM,OAAO;AAGN,MAAM,gBAAgB;AAAA,EAC3B,YAAY,GAAG,EAAE;AAAA,EACjB,QAAQ,GAAG,GAAG;AAAA,EACd,QAAQ,GAAG,GAAG;AAAA,EACd,OAAO,GAAG,GAAG;AAAA,EACb,MAAM,GAAG,GAAG;AAAA,EACZ,MAAM,GAAG,GAAG;AAAA,EACZ,UAAU,GAAG,GAAG;AAAA,EAChB,OAAO,GAAG,GAAG;AAAA;AAAA,EAEb,IAAI,GAAG,EAAE;AAAA,EACT,IAAI,GAAG,EAAE;AAAA,EACT,IAAI,GAAG,GAAG;AAAA,EACV,IAAI,GAAG,GAAG;AAAA,EACV,IAAI,GAAG,GAAG;AAAA,EACV,IAAI,GAAG,GAAG;AAAA,EACV,IAAI,GAAG,GAAG;AAAA,EACV,IAAI,GAAG,GAAG;AACZ;AAEA,MAAM,IAAI;AAGV,MAAMA,WAAU,cAAc,YAAY,GAAG;AAC7C,MAAM,UAAkB,QAAQ,IAAI,qBAAqBA,SAAQ,uBAAuB,EAAE,WAAW;AACrG,MAAM,UAAU;AAMhB,MAAM,UAAwC;AAAA;AAAA,EAE5C,QAAQ,MAAM;AAAA,EACd,EAAE,EAAE,4GAAuB,KAAK;AAAA,EAChC,EAAE,EAAE,6CAAyB,KAAK;AAAA,EAClC,EAAE,EAAE,iEAAyB,KAAK,OAAO,EAAE,EAAE,OAAO,KAAK,sBAAsB,EAAE,EAAE,QAAQ,KAAK;AAAA,EAChG,EAAE,EAAE,sEAAyB,KAAK,MAAM,EAAE,EAAE,0BAA0B,EAAE,EAAE,4BAA4B,KAAK;AAAA,EAC3G,EAAE,EAAE,sEAAyB,KAAK,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,gCAAgC,KAAK;AAAA,EACnH,EAAE,EAAE,sEAAyB,KAAK,OAAO,EAAE,EAAE,yBAAyB,EAAE,EAAE,6BAA6B,KAAK;AAAA,EAC5G,EAAE,EAAE,iEAAyB,KAAK,MAAM,EAAE,EAAE,2BAA2B,EAAE,EAAE,iCAAiC,KAAK;AAAA,EACjH,EAAE,EAAE,6CAAyB,KAAK,YAAY,EAAE,EAAE,MAAM,KAAK,gCAAgC,EAAE,EAAE,QAAQ,KAAK;AAAA,EAC9G,EAAE,EAAE,4GAAuB,KAAK;AAAA,EAChC,EAAE,QAAQ,KAAK,OAAO,mCAAmC,OAAO,GAAG,KAAK;AAAA;AAAA;AAAA,EAIxE,SAAS,MAAM;AAAA,IACb,EAAE,MAAM,SAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,OAAO,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK;AAAA;AAAA;AAAA,EAIjG,OAAO,MAAM;AAAA,IACX,EAAE,UAAU,2QAA+C,KAAK;AAAA,IAChE,EAAE,UAAU,SAAI,KAAK,6CAA6C,EAAE,UAAU,SAAI,KAAK;AAAA,IACvF,EAAE,UAAU,SAAI,KAAK,MAAM,EAAE,MAAM,SAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,KAAK,MAAM,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,UAAU,SAAI,KAAK;AAAA,IACnK,EAAE,UAAU,SAAI,KAAK,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,MAAM,EAAE,UAAU,SAAI,KAAK;AAAA,IAClF,EAAE,UAAU,SAAI,KAAK,6CAA6C,EAAE,UAAU,SAAI,KAAK;AAAA,IACvF,EAAE,UAAU,2QAA+C,KAAK;AAAA;AAAA;AAAA,EAIlE,SAAS,MAAM;AAAA,IACb,EAAE,MAAM,aAAQ,KAAK;AAAA,IACrB,EAAE,MAAM,YAAO,EAAE,KAAK,SAAI,EAAE,MAAM,SAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,KAAK,OAAO,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK;AAAA,IAC5H,EAAE,MAAM,aAAQ,KAAK,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK;AAAA;AAE/D;AAUO,SAAS,YAAY,UAAkB,UAAU,UAA8B,CAAC,GAAS;AAC9F,QAAM,UAAU,QAAQ,WAAW,QAAQ,IAAI,aAAa,UAAa,CAAC,QAAQ,OAAO;AACzF,QAAM,WAAW,QAAQ,OAAO,KAAK,QAAQ;AAC7C,MAAI,SAAS,SAAS;AACtB,MAAI,SAAS;AACX,aAAS,OAAO,QAAQ,mBAAmB,EAAE;AAAA,EAC/C;AACA,UAAQ,OAAO,MAAM,MAAM;AAC7B;AAEO,SAAS,UAAU,UAAkB,UAAkB;AAC5D,UAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ;AAC9C;AAEO,SAAS,eAAyB;AACvC,SAAO,OAAO,KAAK,OAAO;AAC5B;","names":["require"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal Color Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent color theming across the CLI.
|
|
5
|
+
* All colors are defined here to ensure visual consistency.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Brand colors for SpecForge CLI
|
|
9
|
+
*/
|
|
10
|
+
export declare const colors: {
|
|
11
|
+
/** Primary brand color - used for emphasis */
|
|
12
|
+
readonly primary: import("chalk").ChalkInstance;
|
|
13
|
+
/** Secondary color - used for less emphasis */
|
|
14
|
+
readonly secondary: import("chalk").ChalkInstance;
|
|
15
|
+
/** Success messages and indicators */
|
|
16
|
+
readonly success: import("chalk").ChalkInstance;
|
|
17
|
+
/** Warning messages */
|
|
18
|
+
readonly warning: import("chalk").ChalkInstance;
|
|
19
|
+
/** Error messages */
|
|
20
|
+
readonly error: import("chalk").ChalkInstance;
|
|
21
|
+
/** Muted/secondary text */
|
|
22
|
+
readonly muted: import("chalk").ChalkInstance;
|
|
23
|
+
/** Bold text */
|
|
24
|
+
readonly bold: import("chalk").ChalkInstance;
|
|
25
|
+
/** Underlined text (for URLs) */
|
|
26
|
+
readonly link: import("chalk").ChalkInstance;
|
|
27
|
+
/** Code/command styling */
|
|
28
|
+
readonly code: import("chalk").ChalkInstance;
|
|
29
|
+
/** Dimmed text for less important info */
|
|
30
|
+
readonly dim: import("chalk").ChalkInstance;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Semantic color functions for common use cases
|
|
34
|
+
*/
|
|
35
|
+
export declare const style: {
|
|
36
|
+
/** Style a command for display */
|
|
37
|
+
readonly command: (cmd: string) => string;
|
|
38
|
+
/** Style a URL for display */
|
|
39
|
+
readonly url: (url: string) => string;
|
|
40
|
+
/** Style a file path */
|
|
41
|
+
readonly path: (path: string) => string;
|
|
42
|
+
/** Style a key/label */
|
|
43
|
+
readonly label: (label: string) => string;
|
|
44
|
+
/** Style a value */
|
|
45
|
+
readonly value: (value: string) => string;
|
|
46
|
+
/** Style as success */
|
|
47
|
+
readonly ok: (text: string) => string;
|
|
48
|
+
/** Style as error */
|
|
49
|
+
readonly err: (text: string) => string;
|
|
50
|
+
/** Style as warning */
|
|
51
|
+
readonly warn: (text: string) => string;
|
|
52
|
+
/** Style as info */
|
|
53
|
+
readonly info: (text: string) => string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Status icons with colors
|
|
57
|
+
*/
|
|
58
|
+
export declare const icons: {
|
|
59
|
+
readonly success: string;
|
|
60
|
+
readonly error: string;
|
|
61
|
+
readonly warning: string;
|
|
62
|
+
readonly info: string;
|
|
63
|
+
readonly pending: string;
|
|
64
|
+
readonly running: string;
|
|
65
|
+
readonly arrow: string;
|
|
66
|
+
readonly bullet: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Check if terminal supports colors
|
|
70
|
+
*/
|
|
71
|
+
export declare function supportsColor(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Disable colors (for non-TTY or --no-color flag)
|
|
74
|
+
*/
|
|
75
|
+
export declare function disableColors(): void;
|
|
76
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/colors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,8CAA8C;;IAG9C,+CAA+C;;IAG/C,sCAAsC;;IAGtC,uBAAuB;;IAGvB,qBAAqB;;IAGrB,2BAA2B;;IAG3B,gBAAgB;;IAGhB,iCAAiC;;IAGjC,2BAA2B;;IAG3B,0CAA0C;;CAElC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB,kCAAkC;4BACnB,MAAM;IAErB,8BAA8B;wBACnB,MAAM;IAEjB,wBAAwB;0BACX,MAAM;IAEnB,wBAAwB;4BACT,MAAM;IAErB,oBAAoB;4BACL,MAAM;IAErB,uBAAuB;wBACZ,MAAM;IAEjB,qBAAqB;yBACT,MAAM;IAElB,uBAAuB;0BACV,MAAM;IAEnB,oBAAoB;0BACP,MAAM;CACX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;;;;;;;;;CASR,CAAC;AAEX;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
const colors = {
|
|
3
|
+
/** Primary brand color - used for emphasis */
|
|
4
|
+
primary: chalk.cyan,
|
|
5
|
+
/** Secondary color - used for less emphasis */
|
|
6
|
+
secondary: chalk.blue,
|
|
7
|
+
/** Success messages and indicators */
|
|
8
|
+
success: chalk.green,
|
|
9
|
+
/** Warning messages */
|
|
10
|
+
warning: chalk.yellow,
|
|
11
|
+
/** Error messages */
|
|
12
|
+
error: chalk.red,
|
|
13
|
+
/** Muted/secondary text */
|
|
14
|
+
muted: chalk.gray,
|
|
15
|
+
/** Bold text */
|
|
16
|
+
bold: chalk.bold,
|
|
17
|
+
/** Underlined text (for URLs) */
|
|
18
|
+
link: chalk.underline.cyan,
|
|
19
|
+
/** Code/command styling */
|
|
20
|
+
code: chalk.cyan,
|
|
21
|
+
/** Dimmed text for less important info */
|
|
22
|
+
dim: chalk.dim
|
|
23
|
+
};
|
|
24
|
+
const style = {
|
|
25
|
+
/** Style a command for display */
|
|
26
|
+
command: (cmd) => colors.code(cmd),
|
|
27
|
+
/** Style a URL for display */
|
|
28
|
+
url: (url) => colors.link(url),
|
|
29
|
+
/** Style a file path */
|
|
30
|
+
path: (path) => colors.muted(path),
|
|
31
|
+
/** Style a key/label */
|
|
32
|
+
label: (label) => colors.bold(label),
|
|
33
|
+
/** Style a value */
|
|
34
|
+
value: (value) => colors.primary(value),
|
|
35
|
+
/** Style as success */
|
|
36
|
+
ok: (text) => colors.success(text),
|
|
37
|
+
/** Style as error */
|
|
38
|
+
err: (text) => colors.error(text),
|
|
39
|
+
/** Style as warning */
|
|
40
|
+
warn: (text) => colors.warning(text),
|
|
41
|
+
/** Style as info */
|
|
42
|
+
info: (text) => colors.primary(text)
|
|
43
|
+
};
|
|
44
|
+
const icons = {
|
|
45
|
+
success: colors.success("\u2713"),
|
|
46
|
+
error: colors.error("\u2717"),
|
|
47
|
+
warning: colors.warning("\u26A0"),
|
|
48
|
+
info: colors.primary("\u2139"),
|
|
49
|
+
pending: colors.muted("\u25CB"),
|
|
50
|
+
running: colors.primary("\u25CF"),
|
|
51
|
+
arrow: colors.muted("\u2192"),
|
|
52
|
+
bullet: colors.muted("\u2022")
|
|
53
|
+
};
|
|
54
|
+
function supportsColor() {
|
|
55
|
+
return chalk.level > 0;
|
|
56
|
+
}
|
|
57
|
+
function disableColors() {
|
|
58
|
+
chalk.level = 0;
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
colors,
|
|
62
|
+
disableColors,
|
|
63
|
+
icons,
|
|
64
|
+
style,
|
|
65
|
+
supportsColor
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/ui/colors.ts"],"sourcesContent":["/**\n * Terminal Color Utilities\n *\n * Provides consistent color theming across the CLI.\n * All colors are defined here to ensure visual consistency.\n */\n\nimport chalk from 'chalk';\n\n/**\n * Brand colors for SpecForge CLI\n */\nexport const colors = {\n /** Primary brand color - used for emphasis */\n primary: chalk.cyan,\n\n /** Secondary color - used for less emphasis */\n secondary: chalk.blue,\n\n /** Success messages and indicators */\n success: chalk.green,\n\n /** Warning messages */\n warning: chalk.yellow,\n\n /** Error messages */\n error: chalk.red,\n\n /** Muted/secondary text */\n muted: chalk.gray,\n\n /** Bold text */\n bold: chalk.bold,\n\n /** Underlined text (for URLs) */\n link: chalk.underline.cyan,\n\n /** Code/command styling */\n code: chalk.cyan,\n\n /** Dimmed text for less important info */\n dim: chalk.dim,\n} as const;\n\n/**\n * Semantic color functions for common use cases\n */\nexport const style = {\n /** Style a command for display */\n command: (cmd: string) => colors.code(cmd),\n\n /** Style a URL for display */\n url: (url: string) => colors.link(url),\n\n /** Style a file path */\n path: (path: string) => colors.muted(path),\n\n /** Style a key/label */\n label: (label: string) => colors.bold(label),\n\n /** Style a value */\n value: (value: string) => colors.primary(value),\n\n /** Style as success */\n ok: (text: string) => colors.success(text),\n\n /** Style as error */\n err: (text: string) => colors.error(text),\n\n /** Style as warning */\n warn: (text: string) => colors.warning(text),\n\n /** Style as info */\n info: (text: string) => colors.primary(text),\n} as const;\n\n/**\n * Status icons with colors\n */\nexport const icons = {\n success: colors.success('✓'),\n error: colors.error('✗'),\n warning: colors.warning('⚠'),\n info: colors.primary('ℹ'),\n pending: colors.muted('○'),\n running: colors.primary('●'),\n arrow: colors.muted('→'),\n bullet: colors.muted('•'),\n} as const;\n\n/**\n * Check if terminal supports colors\n */\nexport function supportsColor(): boolean {\n return chalk.level > 0;\n}\n\n/**\n * Disable colors (for non-TTY or --no-color flag)\n */\nexport function disableColors(): void {\n chalk.level = 0;\n}\n"],"mappings":"AAOA,OAAO,WAAW;AAKX,MAAM,SAAS;AAAA;AAAA,EAEpB,SAAS,MAAM;AAAA;AAAA,EAGf,WAAW,MAAM;AAAA;AAAA,EAGjB,SAAS,MAAM;AAAA;AAAA,EAGf,SAAS,MAAM;AAAA;AAAA,EAGf,OAAO,MAAM;AAAA;AAAA,EAGb,OAAO,MAAM;AAAA;AAAA,EAGb,MAAM,MAAM;AAAA;AAAA,EAGZ,MAAM,MAAM,UAAU;AAAA;AAAA,EAGtB,MAAM,MAAM;AAAA;AAAA,EAGZ,KAAK,MAAM;AACb;AAKO,MAAM,QAAQ;AAAA;AAAA,EAEnB,SAAS,CAAC,QAAgB,OAAO,KAAK,GAAG;AAAA;AAAA,EAGzC,KAAK,CAAC,QAAgB,OAAO,KAAK,GAAG;AAAA;AAAA,EAGrC,MAAM,CAAC,SAAiB,OAAO,MAAM,IAAI;AAAA;AAAA,EAGzC,OAAO,CAAC,UAAkB,OAAO,KAAK,KAAK;AAAA;AAAA,EAG3C,OAAO,CAAC,UAAkB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAG9C,IAAI,CAAC,SAAiB,OAAO,QAAQ,IAAI;AAAA;AAAA,EAGzC,KAAK,CAAC,SAAiB,OAAO,MAAM,IAAI;AAAA;AAAA,EAGxC,MAAM,CAAC,SAAiB,OAAO,QAAQ,IAAI;AAAA;AAAA,EAG3C,MAAM,CAAC,SAAiB,OAAO,QAAQ,IAAI;AAC7C;AAKO,MAAM,QAAQ;AAAA,EACnB,SAAS,OAAO,QAAQ,QAAG;AAAA,EAC3B,OAAO,OAAO,MAAM,QAAG;AAAA,EACvB,SAAS,OAAO,QAAQ,QAAG;AAAA,EAC3B,MAAM,OAAO,QAAQ,QAAG;AAAA,EACxB,SAAS,OAAO,MAAM,QAAG;AAAA,EACzB,SAAS,OAAO,QAAQ,QAAG;AAAA,EAC3B,OAAO,OAAO,MAAM,QAAG;AAAA,EACvB,QAAQ,OAAO,MAAM,QAAG;AAC1B;AAKO,SAAS,gBAAyB;AACvC,SAAO,MAAM,QAAQ;AACvB;AAKO,SAAS,gBAAsB;AACpC,QAAM,QAAQ;AAChB;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/ui/index.ts"],"sourcesContent":["/**\n * CLI UI Utilities Module\n */\n\nexport * from './colors.js';\nexport * from './output.js';\nexport * from './spinner.js';\n"],"mappings":"AAIA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output Formatting Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent output formatting for tables, lists, and structured data.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Print a labeled value
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* printField('Project', 'my-project');
|
|
11
|
+
* // Output: Project: my-project
|
|
12
|
+
*/
|
|
13
|
+
export declare function printField(label: string, value: string | null | undefined): void;
|
|
14
|
+
/**
|
|
15
|
+
* Print a section header
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* printHeader('Configuration');
|
|
19
|
+
* // Output:
|
|
20
|
+
* // Configuration
|
|
21
|
+
* // ─────────────
|
|
22
|
+
*/
|
|
23
|
+
export declare function printHeader(title: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Print a blank line
|
|
26
|
+
*/
|
|
27
|
+
export declare function printBlank(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Print a list of items
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* printList(['Item 1', 'Item 2', 'Item 3']);
|
|
33
|
+
* // Output:
|
|
34
|
+
* // • Item 1
|
|
35
|
+
* // • Item 2
|
|
36
|
+
* // • Item 3
|
|
37
|
+
*/
|
|
38
|
+
export declare function printList(items: string[], bullet?: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Print a success message
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* printSuccess('Configuration saved');
|
|
44
|
+
* // Output: ✓ Configuration saved
|
|
45
|
+
*/
|
|
46
|
+
export declare function printSuccess(message: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Print an error message
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* printError('Failed to connect');
|
|
52
|
+
* // Output: ✗ Failed to connect
|
|
53
|
+
*/
|
|
54
|
+
export declare function printError(message: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Print a warning message
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* printWarning('API key will expire soon');
|
|
60
|
+
* // Output: ⚠ API key will expire soon
|
|
61
|
+
*/
|
|
62
|
+
export declare function printWarning(message: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Print an info message
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* printInfo('Fetching data...');
|
|
68
|
+
* // Output: ℹ Fetching data...
|
|
69
|
+
*/
|
|
70
|
+
export declare function printInfo(message: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Print a key-value table
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* printTable({
|
|
76
|
+
* 'Project': 'my-project',
|
|
77
|
+
* 'Specification': 'v2.0',
|
|
78
|
+
* 'Status': 'active',
|
|
79
|
+
* });
|
|
80
|
+
*/
|
|
81
|
+
export declare function printTable(data: Record<string, string | null | undefined>): void;
|
|
82
|
+
/**
|
|
83
|
+
* Print JSON output (for --format json)
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* printJson({ project: 'my-project', status: 'active' });
|
|
87
|
+
*/
|
|
88
|
+
export declare function printJson(data: unknown): void;
|
|
89
|
+
/**
|
|
90
|
+
* Print a command hint
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* printHint('specforge init', 'Initialize project');
|
|
94
|
+
* // Output: → Run `specforge init` to initialize project
|
|
95
|
+
*/
|
|
96
|
+
export declare function printHint(command: string, description: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* Print a URL with description
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* printLink('https://specforge.com', 'Visit documentation');
|
|
102
|
+
* // Output: → Visit documentation: https://specforge.com
|
|
103
|
+
*/
|
|
104
|
+
export declare function printLink(url: string, description: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Format bytes to human readable size
|
|
107
|
+
*/
|
|
108
|
+
export declare function formatBytes(bytes: number): string;
|
|
109
|
+
/**
|
|
110
|
+
* Format duration in milliseconds to human readable
|
|
111
|
+
*/
|
|
112
|
+
export declare function formatDuration(ms: number): string;
|
|
113
|
+
/**
|
|
114
|
+
* Truncate string with ellipsis
|
|
115
|
+
*/
|
|
116
|
+
export declare function truncate(str: string, maxLength: number): string;
|
|
117
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/output.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAGhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAqB,GAAG,IAAI,CAI9E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAQhF;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { colors, style, icons } from "./colors.js";
|
|
2
|
+
function printField(label, value) {
|
|
3
|
+
const displayValue = value ?? colors.muted("(not set)");
|
|
4
|
+
console.log(`${style.label(label)}: ${displayValue}`);
|
|
5
|
+
}
|
|
6
|
+
function printHeader(title) {
|
|
7
|
+
console.log();
|
|
8
|
+
console.log(style.label(title));
|
|
9
|
+
console.log(colors.muted("\u2500".repeat(title.length)));
|
|
10
|
+
}
|
|
11
|
+
function printBlank() {
|
|
12
|
+
console.log();
|
|
13
|
+
}
|
|
14
|
+
function printList(items, bullet = icons.bullet) {
|
|
15
|
+
for (const item of items) {
|
|
16
|
+
console.log(` ${bullet} ${item}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function printSuccess(message) {
|
|
20
|
+
console.log(`${icons.success} ${message}`);
|
|
21
|
+
}
|
|
22
|
+
function printError(message) {
|
|
23
|
+
console.error(`${icons.error} ${style.err(message)}`);
|
|
24
|
+
}
|
|
25
|
+
function printWarning(message) {
|
|
26
|
+
console.error(`${icons.warning} ${style.warn(message)}`);
|
|
27
|
+
}
|
|
28
|
+
function printInfo(message) {
|
|
29
|
+
console.log(`${icons.info} ${message}`);
|
|
30
|
+
}
|
|
31
|
+
function printTable(data) {
|
|
32
|
+
const maxKeyLength = Math.max(...Object.keys(data).map((k) => k.length));
|
|
33
|
+
for (const [key, value] of Object.entries(data)) {
|
|
34
|
+
const paddedKey = key.padEnd(maxKeyLength);
|
|
35
|
+
const displayValue = value ?? colors.muted("(not set)");
|
|
36
|
+
console.log(` ${style.label(paddedKey)} ${displayValue}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function printJson(data) {
|
|
40
|
+
console.log(JSON.stringify(data, null, 2));
|
|
41
|
+
}
|
|
42
|
+
function printHint(command, description) {
|
|
43
|
+
console.log(`${icons.arrow} Run ${style.command(command)} to ${description}`);
|
|
44
|
+
}
|
|
45
|
+
function printLink(url, description) {
|
|
46
|
+
console.log(`${icons.arrow} ${description}: ${style.url(url)}`);
|
|
47
|
+
}
|
|
48
|
+
function formatBytes(bytes) {
|
|
49
|
+
if (bytes === 0) return "0 B";
|
|
50
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
51
|
+
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
|
52
|
+
return `${(bytes / Math.pow(1024, i)).toFixed(1)} ${units[i]}`;
|
|
53
|
+
}
|
|
54
|
+
function formatDuration(ms) {
|
|
55
|
+
if (ms < 1e3) return `${ms}ms`;
|
|
56
|
+
if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
|
|
57
|
+
if (ms < 36e5) return `${Math.floor(ms / 6e4)}m ${Math.floor(ms % 6e4 / 1e3)}s`;
|
|
58
|
+
const hours = Math.floor(ms / 36e5);
|
|
59
|
+
const minutes = Math.floor(ms % 36e5 / 6e4);
|
|
60
|
+
return `${hours}h ${minutes}m`;
|
|
61
|
+
}
|
|
62
|
+
function truncate(str, maxLength) {
|
|
63
|
+
if (str.length <= maxLength) return str;
|
|
64
|
+
return str.slice(0, maxLength - 1) + "\u2026";
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
formatBytes,
|
|
68
|
+
formatDuration,
|
|
69
|
+
printBlank,
|
|
70
|
+
printError,
|
|
71
|
+
printField,
|
|
72
|
+
printHeader,
|
|
73
|
+
printHint,
|
|
74
|
+
printInfo,
|
|
75
|
+
printJson,
|
|
76
|
+
printLink,
|
|
77
|
+
printList,
|
|
78
|
+
printSuccess,
|
|
79
|
+
printTable,
|
|
80
|
+
printWarning,
|
|
81
|
+
truncate
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=output.js.map
|