prjct-cli 0.11.5 → 0.12.1
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/CHANGELOG.md +58 -0
- package/README.md +81 -25
- package/bin/dev.js +1 -1
- package/bin/generate-views.js +209 -0
- package/bin/migrate-to-json.js +742 -0
- package/bin/prjct +5 -5
- package/bin/serve.js +226 -50
- package/core/__tests__/agentic/{memory-system.test.js → memory-system.test.ts} +12 -23
- package/core/__tests__/agentic/{plan-mode.test.js → plan-mode.test.ts} +26 -24
- package/core/__tests__/agentic/{prompt-builder.test.js → prompt-builder.test.ts} +3 -8
- package/core/__tests__/utils/{date-helper.test.js → date-helper.test.ts} +19 -30
- package/core/__tests__/utils/{output.test.js → output.test.ts} +12 -24
- package/core/agentic/agent-router.ts +137 -0
- package/core/agentic/chain-of-thought.ts +228 -0
- package/core/agentic/command-executor/command-executor.ts +384 -0
- package/core/agentic/command-executor/index.ts +16 -0
- package/core/agentic/command-executor/status-signal.ts +38 -0
- package/core/agentic/command-executor/types.ts +79 -0
- package/core/agentic/command-executor.ts +8 -0
- package/core/agentic/{context-builder.js → context-builder.ts} +92 -81
- package/core/agentic/context-filter.ts +365 -0
- package/core/agentic/ground-truth/index.ts +76 -0
- package/core/agentic/ground-truth/types.ts +33 -0
- package/core/agentic/ground-truth/utils.ts +48 -0
- package/core/agentic/ground-truth/verifiers/analyze.ts +54 -0
- package/core/agentic/ground-truth/verifiers/done.ts +75 -0
- package/core/agentic/ground-truth/verifiers/feature.ts +70 -0
- package/core/agentic/ground-truth/verifiers/index.ts +37 -0
- package/core/agentic/ground-truth/verifiers/init.ts +52 -0
- package/core/agentic/ground-truth/verifiers/now.ts +57 -0
- package/core/agentic/ground-truth/verifiers/ship.ts +85 -0
- package/core/agentic/ground-truth/verifiers/spec.ts +45 -0
- package/core/agentic/ground-truth/verifiers/sync.ts +47 -0
- package/core/agentic/ground-truth/verifiers.ts +6 -0
- package/core/agentic/ground-truth.ts +8 -0
- package/core/agentic/loop-detector/error-analysis.ts +97 -0
- package/core/agentic/loop-detector/hallucination.ts +71 -0
- package/core/agentic/loop-detector/index.ts +41 -0
- package/core/agentic/loop-detector/loop-detector.ts +222 -0
- package/core/agentic/loop-detector/types.ts +66 -0
- package/core/agentic/loop-detector.ts +8 -0
- package/core/agentic/memory-system/history.ts +53 -0
- package/core/agentic/memory-system/index.ts +192 -0
- package/core/agentic/memory-system/patterns.ts +156 -0
- package/core/agentic/memory-system/semantic-memories.ts +277 -0
- package/core/agentic/memory-system/session.ts +21 -0
- package/core/agentic/memory-system/types.ts +159 -0
- package/core/agentic/memory-system.ts +8 -0
- package/core/agentic/parallel-tools.ts +165 -0
- package/core/agentic/plan-mode/approval.ts +57 -0
- package/core/agentic/plan-mode/constants.ts +44 -0
- package/core/agentic/plan-mode/index.ts +28 -0
- package/core/agentic/plan-mode/plan-mode.ts +406 -0
- package/core/agentic/plan-mode/types.ts +193 -0
- package/core/agentic/plan-mode.ts +8 -0
- package/core/agentic/prompt-builder.ts +566 -0
- package/core/agentic/response-templates.ts +164 -0
- package/core/agentic/semantic-compression.ts +273 -0
- package/core/agentic/services.ts +206 -0
- package/core/agentic/smart-context.ts +476 -0
- package/core/agentic/{template-loader.js → template-loader.ts} +27 -16
- package/core/agentic/think-blocks.ts +202 -0
- package/core/agentic/tool-registry.ts +119 -0
- package/core/agentic/validation-rules.ts +313 -0
- package/core/agents/index.ts +28 -0
- package/core/agents/performance.ts +444 -0
- package/core/agents/types.ts +126 -0
- package/core/bus/{index.js → index.ts} +57 -61
- package/core/command-registry/categories.ts +23 -0
- package/core/command-registry/commands.ts +15 -0
- package/core/command-registry/core-commands.ts +319 -0
- package/core/command-registry/index.ts +158 -0
- package/core/command-registry/optional-commands.ts +119 -0
- package/core/command-registry/setup-commands.ts +53 -0
- package/core/command-registry/types.ts +59 -0
- package/core/command-registry.ts +9 -0
- package/core/commands/analysis.ts +298 -0
- package/core/commands/analytics.ts +288 -0
- package/core/commands/base.ts +273 -0
- package/core/commands/index.ts +211 -0
- package/core/commands/maintenance.ts +226 -0
- package/core/commands/planning.ts +311 -0
- package/core/commands/setup.ts +309 -0
- package/core/commands/shipping.ts +188 -0
- package/core/commands/types.ts +183 -0
- package/core/commands/workflow.ts +226 -0
- package/core/commands.ts +11 -0
- package/core/constants/formats.ts +187 -0
- package/core/constants/index.ts +7 -0
- package/core/{context-sync.js → context-sync.ts} +59 -26
- package/core/data/agents-manager.ts +76 -0
- package/core/data/analysis-manager.ts +83 -0
- package/core/data/base-manager.ts +156 -0
- package/core/data/ideas-manager.ts +81 -0
- package/core/data/index.ts +32 -0
- package/core/data/outcomes-manager.ts +96 -0
- package/core/data/project-manager.ts +75 -0
- package/core/data/roadmap-manager.ts +118 -0
- package/core/data/shipped-manager.ts +65 -0
- package/core/data/state-manager.ts +214 -0
- package/core/domain/{agent-generator.js → agent-generator.ts} +77 -57
- package/core/domain/{agent-loader.js → agent-loader.ts} +65 -56
- package/core/domain/{agent-matcher.js → agent-matcher.ts} +51 -24
- package/core/domain/{agent-validator.js → agent-validator.ts} +70 -37
- package/core/domain/{analyzer.js → analyzer.ts} +91 -85
- package/core/domain/{architect-session.js → architect-session.ts} +49 -34
- package/core/domain/{architecture-generator.js → architecture-generator.ts} +25 -13
- package/core/domain/{context-estimator.js → context-estimator.ts} +57 -36
- package/core/domain/{product-standards.js → product-standards.ts} +40 -26
- package/core/domain/{smart-cache.js → smart-cache.ts} +39 -30
- package/core/domain/{snapshot-manager.js → snapshot-manager.ts} +103 -100
- package/core/domain/{task-analyzer.js → task-analyzer.ts} +82 -43
- package/core/domain/task-stack/index.ts +19 -0
- package/core/domain/task-stack/parser.ts +86 -0
- package/core/domain/task-stack/storage.ts +123 -0
- package/core/domain/task-stack/task-stack.ts +340 -0
- package/core/domain/task-stack/types.ts +51 -0
- package/core/domain/task-stack.ts +8 -0
- package/core/{index.js → index.ts} +61 -18
- package/core/infrastructure/{agent-detector.js → agent-detector.ts} +55 -19
- package/core/infrastructure/agents/{claude-agent.js → claude-agent.ts} +61 -21
- package/core/infrastructure/{author-detector.js → author-detector.ts} +42 -49
- package/core/infrastructure/{capability-installer.js → capability-installer.ts} +51 -27
- package/core/infrastructure/{command-installer.js → command-installer/command-installer.ts} +43 -144
- package/core/infrastructure/command-installer/global-config.ts +106 -0
- package/core/infrastructure/command-installer/index.ts +25 -0
- package/core/infrastructure/command-installer/types.ts +41 -0
- package/core/infrastructure/command-installer.ts +8 -0
- package/core/infrastructure/{config-manager.js → config-manager.ts} +60 -80
- package/core/infrastructure/{editors-config.js → editors-config.ts} +33 -31
- package/core/infrastructure/legacy-installer-detector/cleanup.ts +216 -0
- package/core/infrastructure/legacy-installer-detector/detection.ts +95 -0
- package/core/infrastructure/legacy-installer-detector/index.ts +171 -0
- package/core/infrastructure/legacy-installer-detector/migration.ts +87 -0
- package/core/infrastructure/legacy-installer-detector/types.ts +42 -0
- package/core/infrastructure/legacy-installer-detector.ts +7 -0
- package/core/infrastructure/migrator/file-operations.ts +125 -0
- package/core/infrastructure/migrator/index.ts +288 -0
- package/core/infrastructure/migrator/project-scanner.ts +89 -0
- package/core/infrastructure/migrator/reports.ts +117 -0
- package/core/infrastructure/migrator/types.ts +124 -0
- package/core/infrastructure/migrator/validation.ts +94 -0
- package/core/infrastructure/migrator/version-migration.ts +117 -0
- package/core/infrastructure/migrator.ts +10 -0
- package/core/infrastructure/{path-manager.js → path-manager.ts} +51 -91
- package/core/infrastructure/session-manager/index.ts +23 -0
- package/core/infrastructure/session-manager/migration.ts +88 -0
- package/core/infrastructure/session-manager/session-manager.ts +307 -0
- package/core/infrastructure/session-manager/types.ts +45 -0
- package/core/infrastructure/session-manager.ts +8 -0
- package/core/infrastructure/{setup.js → setup.ts} +29 -21
- package/core/infrastructure/{update-checker.js → update-checker.ts} +40 -18
- package/core/outcomes/analyzer.ts +333 -0
- package/core/outcomes/index.ts +34 -0
- package/core/outcomes/recorder.ts +194 -0
- package/core/outcomes/types.ts +145 -0
- package/core/plugin/{hooks.js → hooks.ts} +56 -58
- package/core/plugin/{index.js → index.ts} +19 -8
- package/core/plugin/{loader.js → loader.ts} +87 -69
- package/core/plugin/{registry.js → registry.ts} +49 -45
- package/core/plugins/{webhook.js → webhook.ts} +43 -27
- package/core/schemas/agents.ts +27 -0
- package/core/schemas/analysis.ts +41 -0
- package/core/schemas/ideas.ts +83 -0
- package/core/schemas/index.ts +73 -0
- package/core/schemas/outcomes.ts +22 -0
- package/core/schemas/project.ts +26 -0
- package/core/schemas/roadmap.ts +90 -0
- package/core/schemas/shipped.ts +82 -0
- package/core/schemas/state.ts +107 -0
- package/core/session/index.ts +17 -0
- package/core/session/{metrics.js → metrics.ts} +64 -46
- package/core/session/{index.js → session-manager.ts} +51 -117
- package/core/session/types.ts +29 -0
- package/core/session/utils.ts +57 -0
- package/core/state/index.ts +25 -0
- package/core/state/manager.ts +376 -0
- package/core/state/types.ts +185 -0
- package/core/tsconfig.json +22 -0
- package/core/types/index.ts +506 -0
- package/core/utils/{animations.js → animations.ts} +74 -28
- package/core/utils/{branding.js → branding.ts} +29 -4
- package/core/utils/{date-helper.js → date-helper.ts} +31 -74
- package/core/utils/file-helper.ts +262 -0
- package/core/utils/{jsonl-helper.js → jsonl-helper.ts} +71 -107
- package/core/utils/{logger.js → logger.ts} +24 -12
- package/core/utils/{output.js → output.ts} +25 -13
- package/core/utils/{project-capabilities.js → project-capabilities.ts} +31 -18
- package/core/utils/{session-helper.js → session-helper.ts} +79 -66
- package/core/utils/{version.js → version.ts} +23 -31
- package/core/view-generator.ts +536 -0
- package/package.json +23 -17
- package/packages/shared/.turbo/turbo-build.log +14 -0
- package/packages/shared/dist/index.d.ts +8 -613
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +4110 -118
- package/packages/shared/dist/schemas.d.ts +408 -0
- package/packages/shared/dist/schemas.d.ts.map +1 -0
- package/packages/shared/dist/types.d.ts +144 -0
- package/packages/shared/dist/types.d.ts.map +1 -0
- package/packages/shared/dist/unified.d.ts +139 -0
- package/packages/shared/dist/unified.d.ts.map +1 -0
- package/packages/shared/dist/utils.d.ts +60 -0
- package/packages/shared/dist/utils.d.ts.map +1 -0
- package/packages/shared/package.json +4 -4
- package/packages/shared/src/index.ts +1 -0
- package/packages/shared/src/unified.ts +174 -0
- package/packages/web/app/api/claude/sessions/route.ts +1 -1
- package/packages/web/app/api/claude/status/route.ts +1 -1
- package/packages/web/app/api/migrate/route.ts +46 -0
- package/packages/web/app/api/projects/[id]/route.ts +1 -1
- package/packages/web/app/api/projects/[id]/stats/route.ts +30 -2
- package/packages/web/app/api/projects/[id]/status/route.ts +1 -1
- package/packages/web/app/api/projects/route.ts +1 -1
- package/packages/web/app/api/settings/route.ts +97 -0
- package/packages/web/app/api/v2/projects/[id]/unified/route.ts +57 -0
- package/packages/web/app/globals.css +38 -0
- package/packages/web/app/layout.tsx +10 -2
- package/packages/web/app/page.tsx +9 -224
- package/packages/web/app/project/[id]/page.tsx +191 -63
- package/packages/web/app/project/[id]/stats/loading.tsx +43 -0
- package/packages/web/app/project/[id]/stats/page.tsx +204 -163
- package/packages/web/app/settings/page.tsx +222 -2
- package/packages/web/components/ActivityTimeline/ActivityTimeline.constants.ts +2 -0
- package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +50 -0
- package/packages/web/components/ActivityTimeline/ActivityTimeline.types.ts +8 -0
- package/packages/web/components/ActivityTimeline/hooks/index.ts +2 -0
- package/packages/web/components/ActivityTimeline/hooks/useExpandable.ts +9 -0
- package/packages/web/components/ActivityTimeline/hooks/useGroupedEvents.ts +23 -0
- package/packages/web/components/ActivityTimeline/index.ts +2 -0
- package/packages/web/components/AgentsCard/AgentsCard.tsx +63 -0
- package/packages/web/components/AgentsCard/AgentsCard.types.ts +13 -0
- package/packages/web/components/AgentsCard/index.ts +2 -0
- package/packages/web/components/AppSidebar/AppSidebar.tsx +190 -0
- package/packages/web/components/AppSidebar/index.ts +1 -0
- package/packages/web/components/BackLink/BackLink.tsx +18 -0
- package/packages/web/components/BackLink/BackLink.types.ts +5 -0
- package/packages/web/components/BackLink/index.ts +2 -0
- package/packages/web/components/BentoCard/BentoCard.constants.ts +16 -0
- package/packages/web/components/BentoCard/BentoCard.tsx +47 -0
- package/packages/web/components/BentoCard/BentoCard.types.ts +15 -0
- package/packages/web/components/BentoCard/index.ts +2 -0
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.constants.ts +9 -0
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.tsx +18 -0
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.types.ts +5 -0
- package/packages/web/components/BentoCardSkeleton/index.ts +2 -0
- package/packages/web/components/{stats → BentoGrid}/BentoGrid.tsx +4 -8
- package/packages/web/components/BentoGrid/BentoGrid.types.ts +4 -0
- package/packages/web/components/BentoGrid/index.ts +2 -0
- package/packages/web/components/CommandButton/index.ts +1 -0
- package/packages/web/components/ConnectionStatus/index.ts +1 -0
- package/packages/web/components/DashboardContent/DashboardContent.tsx +254 -0
- package/packages/web/components/DashboardContent/index.ts +1 -0
- package/packages/web/components/DateGroup/DateGroup.tsx +18 -0
- package/packages/web/components/DateGroup/DateGroup.types.ts +6 -0
- package/packages/web/components/DateGroup/DateGroup.utils.ts +11 -0
- package/packages/web/components/DateGroup/index.ts +2 -0
- package/packages/web/components/{stats → EmptyState}/EmptyState.tsx +1 -10
- package/packages/web/components/EmptyState/EmptyState.types.ts +10 -0
- package/packages/web/components/EmptyState/index.ts +2 -0
- package/packages/web/components/EventRow/EventRow.constants.ts +10 -0
- package/packages/web/components/EventRow/EventRow.tsx +49 -0
- package/packages/web/components/EventRow/EventRow.types.ts +7 -0
- package/packages/web/components/EventRow/EventRow.utils.ts +49 -0
- package/packages/web/components/EventRow/index.ts +2 -0
- package/packages/web/components/ExpandButton/ExpandButton.tsx +18 -0
- package/packages/web/components/ExpandButton/ExpandButton.types.ts +6 -0
- package/packages/web/components/ExpandButton/index.ts +2 -0
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.tsx +14 -0
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.types.ts +5 -0
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.utils.ts +13 -0
- package/packages/web/components/HealthGradientBackground/index.ts +2 -0
- package/packages/web/components/HeroSection/HeroSection.tsx +55 -0
- package/packages/web/components/HeroSection/HeroSection.types.ts +14 -0
- package/packages/web/components/HeroSection/HeroSection.utils.ts +7 -0
- package/packages/web/components/HeroSection/hooks/index.ts +2 -0
- package/packages/web/components/HeroSection/hooks/useCountUp.ts +45 -0
- package/packages/web/components/HeroSection/hooks/useWeeklyActivity.ts +18 -0
- package/packages/web/components/HeroSection/index.ts +2 -0
- package/packages/web/components/{stats → IdeasCard}/IdeasCard.tsx +3 -14
- package/packages/web/components/IdeasCard/IdeasCard.types.ts +9 -0
- package/packages/web/components/IdeasCard/index.ts +2 -0
- package/packages/web/components/InsightMessage/InsightMessage.tsx +9 -0
- package/packages/web/components/InsightMessage/InsightMessage.types.ts +3 -0
- package/packages/web/components/InsightMessage/index.ts +2 -0
- package/packages/web/components/Logo/index.ts +1 -0
- package/packages/web/components/MarkdownContent/index.ts +1 -0
- package/packages/web/components/NowCard/NowCard.tsx +93 -0
- package/packages/web/components/NowCard/NowCard.types.ts +15 -0
- package/packages/web/components/NowCard/index.ts +2 -0
- package/packages/web/components/ProgressRing/ProgressRing.constants.ts +20 -0
- package/packages/web/components/{stats → ProgressRing}/ProgressRing.tsx +4 -27
- package/packages/web/components/ProgressRing/ProgressRing.types.ts +11 -0
- package/packages/web/components/ProgressRing/index.ts +2 -0
- package/packages/web/components/ProjectAvatar/index.ts +1 -0
- package/packages/web/components/Providers/index.ts +1 -0
- package/packages/web/components/QueueCard/QueueCard.tsx +72 -0
- package/packages/web/components/QueueCard/QueueCard.types.ts +11 -0
- package/packages/web/components/QueueCard/QueueCard.utils.ts +12 -0
- package/packages/web/components/QueueCard/index.ts +2 -0
- package/packages/web/components/{stats → RoadmapCard}/RoadmapCard.tsx +3 -23
- package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +15 -0
- package/packages/web/components/RoadmapCard/index.ts +2 -0
- package/packages/web/components/{stats → ShipsCard}/ShipsCard.tsx +4 -22
- package/packages/web/components/ShipsCard/ShipsCard.types.ts +12 -0
- package/packages/web/components/ShipsCard/ShipsCard.utils.ts +4 -0
- package/packages/web/components/ShipsCard/index.ts +2 -0
- package/packages/web/components/{stats → SparklineChart}/SparklineChart.tsx +1 -7
- package/packages/web/components/SparklineChart/SparklineChart.types.ts +6 -0
- package/packages/web/components/SparklineChart/index.ts +2 -0
- package/packages/web/components/StreakCard/StreakCard.constants.ts +2 -0
- package/packages/web/components/{stats → StreakCard}/StreakCard.tsx +5 -11
- package/packages/web/components/StreakCard/StreakCard.types.ts +4 -0
- package/packages/web/components/StreakCard/index.ts +2 -0
- package/packages/web/components/TasksCounter/TasksCounter.tsx +14 -0
- package/packages/web/components/TasksCounter/TasksCounter.types.ts +3 -0
- package/packages/web/components/TasksCounter/index.ts +2 -0
- package/packages/web/components/TechStackBadges/index.ts +1 -0
- package/packages/web/components/{TerminalTab.tsx → TerminalTabs/TerminalTab.tsx} +11 -0
- package/packages/web/components/{TerminalTabs.tsx → TerminalTabs/TerminalTabs.tsx} +29 -28
- package/packages/web/components/TerminalTabs/index.ts +1 -0
- package/packages/web/components/VelocityBadge/VelocityBadge.tsx +27 -0
- package/packages/web/components/VelocityBadge/VelocityBadge.types.ts +3 -0
- package/packages/web/components/VelocityBadge/index.ts +2 -0
- package/packages/web/components/VelocityCard/VelocityCard.tsx +71 -0
- package/packages/web/components/VelocityCard/VelocityCard.types.ts +7 -0
- package/packages/web/components/VelocityCard/index.ts +2 -0
- package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +13 -0
- package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +3 -0
- package/packages/web/components/WeeklySparkline/index.ts +2 -0
- package/packages/web/components/ui/input.tsx +21 -0
- package/packages/web/context/TerminalTabsContext.tsx +46 -1
- package/packages/web/hooks/useClaudeTerminal.ts +71 -21
- package/packages/web/hooks/useProjectStats.ts +55 -0
- package/packages/web/hooks/useProjects.ts +6 -6
- package/packages/web/lib/actions/projects.ts +15 -0
- package/packages/web/lib/json-loader.ts +630 -0
- package/packages/web/lib/services/index.ts +9 -0
- package/packages/web/lib/services/migration.server.ts +600 -0
- package/packages/web/lib/services/projects.server.ts +52 -0
- package/packages/web/lib/services/stats.server.ts +264 -0
- package/packages/web/lib/unified-loader.ts +396 -0
- package/packages/web/package.json +10 -7
- package/packages/web/server.ts +58 -8
- package/templates/commands/done.md +76 -32
- package/templates/commands/feature.md +121 -47
- package/templates/commands/idea.md +81 -8
- package/templates/commands/now.md +41 -17
- package/templates/commands/ship.md +64 -25
- package/templates/commands/sync.md +28 -3
- package/core/agentic/agent-router.js +0 -140
- package/core/agentic/chain-of-thought.js +0 -578
- package/core/agentic/command-executor.js +0 -417
- package/core/agentic/context-filter.js +0 -354
- package/core/agentic/ground-truth.js +0 -591
- package/core/agentic/loop-detector.js +0 -406
- package/core/agentic/memory-system.js +0 -845
- package/core/agentic/parallel-tools.js +0 -366
- package/core/agentic/plan-mode.js +0 -572
- package/core/agentic/prompt-builder.js +0 -352
- package/core/agentic/response-templates.js +0 -290
- package/core/agentic/semantic-compression.js +0 -517
- package/core/agentic/think-blocks.js +0 -657
- package/core/agentic/tool-registry.js +0 -184
- package/core/agentic/validation-rules.js +0 -380
- package/core/command-registry.js +0 -698
- package/core/commands.js +0 -2237
- package/core/domain/task-stack.js +0 -497
- package/core/infrastructure/legacy-installer-detector.js +0 -546
- package/core/infrastructure/migrator.js +0 -796
- package/core/infrastructure/session-manager.js +0 -390
- package/core/utils/file-helper.js +0 -329
- package/packages/web/app/api/projects/[id]/delete/route.ts +0 -21
- package/packages/web/app/api/stats/route.ts +0 -38
- package/packages/web/components/AppSidebar.tsx +0 -113
- package/packages/web/components/stats/ActivityTimeline.tsx +0 -201
- package/packages/web/components/stats/AgentsCard.tsx +0 -56
- package/packages/web/components/stats/BentoCard.tsx +0 -88
- package/packages/web/components/stats/HeroSection.tsx +0 -172
- package/packages/web/components/stats/NowCard.tsx +0 -71
- package/packages/web/components/stats/QueueCard.tsx +0 -58
- package/packages/web/components/stats/VelocityCard.tsx +0 -60
- package/packages/web/components/stats/index.ts +0 -17
- package/packages/web/hooks/useStats.ts +0 -28
- /package/packages/web/components/{CommandButton.tsx → CommandButton/CommandButton.tsx} +0 -0
- /package/packages/web/components/{ConnectionStatus.tsx → ConnectionStatus/ConnectionStatus.tsx} +0 -0
- /package/packages/web/components/{Logo.tsx → Logo/Logo.tsx} +0 -0
- /package/packages/web/components/{MarkdownContent.tsx → MarkdownContent/MarkdownContent.tsx} +0 -0
- /package/packages/web/components/{ProjectAvatar.tsx → ProjectAvatar/ProjectAvatar.tsx} +0 -0
- /package/packages/web/components/{providers.tsx → Providers/Providers.tsx} +0 -0
- /package/packages/web/components/{TechStackBadges.tsx → TechStackBadges/TechStackBadges.tsx} +0 -0
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Types for prjct-cli
|
|
3
|
+
* Shared type definitions across the codebase
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// ============================================
|
|
7
|
+
// Command System
|
|
8
|
+
// ============================================
|
|
9
|
+
|
|
10
|
+
export interface CommandResult {
|
|
11
|
+
success: boolean
|
|
12
|
+
message?: string
|
|
13
|
+
error?: string
|
|
14
|
+
data?: unknown
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface CommandUsage {
|
|
18
|
+
human: string
|
|
19
|
+
claude: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface CommandMetadata {
|
|
23
|
+
requiresProject: boolean
|
|
24
|
+
requiresActiveTask: boolean
|
|
25
|
+
modifiesState: boolean
|
|
26
|
+
category: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface CommandFeature {
|
|
30
|
+
name: string
|
|
31
|
+
status: 'implemented' | 'planned' | 'deprecated'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface Command {
|
|
35
|
+
name: string
|
|
36
|
+
description: string
|
|
37
|
+
category: string
|
|
38
|
+
usage: CommandUsage
|
|
39
|
+
metadata: CommandMetadata
|
|
40
|
+
features: CommandFeature[]
|
|
41
|
+
implemented: boolean
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface CommandRegistry {
|
|
45
|
+
getByName(name: string): Command | undefined
|
|
46
|
+
getByCategory(category: string): Command[]
|
|
47
|
+
getAll(): Command[]
|
|
48
|
+
getStats(): CommandStats
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CommandStats {
|
|
52
|
+
total: number
|
|
53
|
+
implemented: number
|
|
54
|
+
planned: number
|
|
55
|
+
byCategory: Record<string, number>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ============================================
|
|
59
|
+
// Context System
|
|
60
|
+
// ============================================
|
|
61
|
+
|
|
62
|
+
export interface ContextPaths {
|
|
63
|
+
now: string
|
|
64
|
+
next: string
|
|
65
|
+
context: string
|
|
66
|
+
shipped: string
|
|
67
|
+
metrics: string
|
|
68
|
+
ideas: string
|
|
69
|
+
roadmap: string
|
|
70
|
+
specs: string
|
|
71
|
+
memory: string
|
|
72
|
+
patterns: string
|
|
73
|
+
analysis: string
|
|
74
|
+
codePatterns: string
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Command parameters passed from CLI to commands.
|
|
79
|
+
* Each property corresponds to a CLI argument or flag.
|
|
80
|
+
*/
|
|
81
|
+
export interface CommandParams {
|
|
82
|
+
/** Task description for now/build commands */
|
|
83
|
+
task?: string
|
|
84
|
+
/** Feature/bug description */
|
|
85
|
+
description?: string
|
|
86
|
+
/** Feature name for feature/ship commands */
|
|
87
|
+
feature?: string
|
|
88
|
+
/** Idea text for idea command */
|
|
89
|
+
idea?: string
|
|
90
|
+
/** Alias for idea */
|
|
91
|
+
text?: string
|
|
92
|
+
/** Name parameter for various commands */
|
|
93
|
+
name?: string
|
|
94
|
+
/** Skip planning mode check */
|
|
95
|
+
skipPlanning?: boolean
|
|
96
|
+
/** User has approved destructive action */
|
|
97
|
+
approved?: boolean
|
|
98
|
+
/** Period for progress command */
|
|
99
|
+
period?: 'day' | 'week' | 'month'
|
|
100
|
+
/** Target for design command */
|
|
101
|
+
target?: string
|
|
102
|
+
/** Action for architect command */
|
|
103
|
+
action?: string
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface ProjectContext {
|
|
107
|
+
projectId: string
|
|
108
|
+
projectPath: string
|
|
109
|
+
globalPath: string
|
|
110
|
+
paths: ContextPaths
|
|
111
|
+
params: CommandParams
|
|
112
|
+
timestamp: string
|
|
113
|
+
date: string
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface ProjectState {
|
|
117
|
+
now: string | null
|
|
118
|
+
next: string | null
|
|
119
|
+
shipped: string | null
|
|
120
|
+
metrics: string | null
|
|
121
|
+
ideas: string | null
|
|
122
|
+
roadmap: string | null
|
|
123
|
+
analysis: string | null
|
|
124
|
+
codePatterns: string | null
|
|
125
|
+
_compressed?: Record<string, CompressedContent>
|
|
126
|
+
_compressionMetrics?: CompressionMetrics
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Metrics from semantic compression of project state.
|
|
131
|
+
*/
|
|
132
|
+
export interface CompressionMetrics {
|
|
133
|
+
/** Original total size in bytes */
|
|
134
|
+
originalSize: number
|
|
135
|
+
/** Compressed total size in bytes */
|
|
136
|
+
compressedSize: number
|
|
137
|
+
/** Compression ratio (0-1) */
|
|
138
|
+
ratio: number
|
|
139
|
+
/** Fields that were compressed */
|
|
140
|
+
fieldsCompressed: string[]
|
|
141
|
+
/** Timestamp of compression */
|
|
142
|
+
timestamp: string
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface CompressedContent {
|
|
146
|
+
raw: string
|
|
147
|
+
summary: string
|
|
148
|
+
compressed: string
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// ============================================
|
|
152
|
+
// Agent System
|
|
153
|
+
// ============================================
|
|
154
|
+
|
|
155
|
+
export interface Agent {
|
|
156
|
+
name: string
|
|
157
|
+
content: string
|
|
158
|
+
path: string
|
|
159
|
+
role: string | null
|
|
160
|
+
domain: string | null
|
|
161
|
+
skills: string[]
|
|
162
|
+
modified: Date
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface AgentInfo {
|
|
166
|
+
name: string
|
|
167
|
+
type: string
|
|
168
|
+
domain?: string
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export interface AgentRouting {
|
|
172
|
+
agent: AgentInfo
|
|
173
|
+
confidence: number
|
|
174
|
+
reason: string
|
|
175
|
+
availableAgents: string[]
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ============================================
|
|
179
|
+
// Tool System
|
|
180
|
+
// ============================================
|
|
181
|
+
|
|
182
|
+
export type ToolFunction = (...args: unknown[]) => Promise<unknown>
|
|
183
|
+
|
|
184
|
+
export interface ToolDefinition {
|
|
185
|
+
name: string
|
|
186
|
+
description: string
|
|
187
|
+
handler: ToolFunction
|
|
188
|
+
parallelizable: boolean
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export interface ToolRegistry {
|
|
192
|
+
get(name: string): ToolFunction | undefined
|
|
193
|
+
list(): string[]
|
|
194
|
+
has(name: string): boolean
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export interface BashResult {
|
|
198
|
+
stdout: string
|
|
199
|
+
stderr: string
|
|
200
|
+
code: number
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// ============================================
|
|
204
|
+
// Execution System
|
|
205
|
+
// ============================================
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Result of command execution through the agentic system.
|
|
209
|
+
*
|
|
210
|
+
* @group Core - Essential execution data
|
|
211
|
+
* @group Context - Execution environment
|
|
212
|
+
* @group Agentic - AI-related outputs
|
|
213
|
+
*/
|
|
214
|
+
export interface ExecutionResult {
|
|
215
|
+
// Core
|
|
216
|
+
/** Whether command executed successfully */
|
|
217
|
+
success: boolean
|
|
218
|
+
/** Generated prompt sent to Claude */
|
|
219
|
+
prompt: string
|
|
220
|
+
/** Whether execution was delegated to agentic system */
|
|
221
|
+
agenticDelegation: boolean
|
|
222
|
+
|
|
223
|
+
// Context
|
|
224
|
+
/** Template that was loaded */
|
|
225
|
+
template: Template | null
|
|
226
|
+
/** Project context used */
|
|
227
|
+
context: ProjectContext
|
|
228
|
+
/** Project state at execution time */
|
|
229
|
+
state: ProjectState
|
|
230
|
+
|
|
231
|
+
// Agentic outputs
|
|
232
|
+
/** Chain-of-thought reasoning (if enabled) */
|
|
233
|
+
reasoning: ChainOfThoughtResult | null
|
|
234
|
+
/** Think block content (if enabled) */
|
|
235
|
+
thinkBlock: ThinkBlockResult | null
|
|
236
|
+
/** Ground truth verification result */
|
|
237
|
+
groundTruth: GroundTruthResult | null
|
|
238
|
+
/** Compression metrics from semantic compression */
|
|
239
|
+
compressionMetrics: CompressionMetrics | null
|
|
240
|
+
/** Patterns learned during execution */
|
|
241
|
+
learnedPatterns: LearnedPatterns | null
|
|
242
|
+
/** Memories relevant to this execution */
|
|
243
|
+
relevantMemories: Memory[]
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Result from chain-of-thought processing.
|
|
248
|
+
*/
|
|
249
|
+
export interface ChainOfThoughtResult {
|
|
250
|
+
steps: string[]
|
|
251
|
+
conclusion: string
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Result from think block processing.
|
|
256
|
+
*/
|
|
257
|
+
export interface ThinkBlockResult {
|
|
258
|
+
content: string
|
|
259
|
+
duration: number
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Result from ground truth verification.
|
|
264
|
+
*/
|
|
265
|
+
export interface GroundTruthResult {
|
|
266
|
+
verified: boolean
|
|
267
|
+
checks: GroundTruthCheck[]
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export interface GroundTruthCheck {
|
|
271
|
+
name: string
|
|
272
|
+
passed: boolean
|
|
273
|
+
message?: string
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Patterns learned during execution.
|
|
278
|
+
*/
|
|
279
|
+
export interface LearnedPatterns {
|
|
280
|
+
/** Code patterns detected */
|
|
281
|
+
code: string[]
|
|
282
|
+
/** User preference patterns */
|
|
283
|
+
preferences: string[]
|
|
284
|
+
/** Error patterns to avoid */
|
|
285
|
+
errors: string[]
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export interface ValidationResult {
|
|
289
|
+
valid: boolean
|
|
290
|
+
error: string | null
|
|
291
|
+
suggestion: string | null
|
|
292
|
+
state: ProjectState
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// ============================================
|
|
296
|
+
// Memory System
|
|
297
|
+
// ============================================
|
|
298
|
+
|
|
299
|
+
export interface Memory {
|
|
300
|
+
id: string
|
|
301
|
+
type: string
|
|
302
|
+
content: string
|
|
303
|
+
tags: string[]
|
|
304
|
+
timestamp: string
|
|
305
|
+
metadata?: MemoryMetadata
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Metadata associated with a memory entry.
|
|
310
|
+
*/
|
|
311
|
+
export interface MemoryMetadata {
|
|
312
|
+
/** Command that created this memory */
|
|
313
|
+
command?: string
|
|
314
|
+
/** Confidence score (0-1) */
|
|
315
|
+
confidence?: number
|
|
316
|
+
/** Related task ID */
|
|
317
|
+
taskId?: string
|
|
318
|
+
/** Related feature name */
|
|
319
|
+
feature?: string
|
|
320
|
+
/** Source of the memory */
|
|
321
|
+
source?: 'user' | 'system' | 'learned'
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export interface MemoryQuery {
|
|
325
|
+
type?: string
|
|
326
|
+
tags?: string[]
|
|
327
|
+
limit?: number
|
|
328
|
+
since?: string
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export type MemoryTag =
|
|
332
|
+
| 'decision'
|
|
333
|
+
| 'pattern'
|
|
334
|
+
| 'preference'
|
|
335
|
+
| 'learning'
|
|
336
|
+
| 'error'
|
|
337
|
+
| 'success'
|
|
338
|
+
|
|
339
|
+
// ============================================
|
|
340
|
+
// Session System
|
|
341
|
+
// ============================================
|
|
342
|
+
|
|
343
|
+
export interface Session {
|
|
344
|
+
id: string
|
|
345
|
+
startedAt: string
|
|
346
|
+
endedAt?: string
|
|
347
|
+
task?: string
|
|
348
|
+
duration?: number
|
|
349
|
+
metrics?: SessionMetrics
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export interface SessionMetrics {
|
|
353
|
+
filesCreated: number
|
|
354
|
+
filesModified: number
|
|
355
|
+
linesAdded: number
|
|
356
|
+
linesRemoved: number
|
|
357
|
+
commits: number
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// ============================================
|
|
361
|
+
// Task System
|
|
362
|
+
// ============================================
|
|
363
|
+
|
|
364
|
+
export interface Task {
|
|
365
|
+
id: string
|
|
366
|
+
description: string
|
|
367
|
+
status: 'pending' | 'in_progress' | 'completed' | 'blocked'
|
|
368
|
+
createdAt: string
|
|
369
|
+
completedAt?: string
|
|
370
|
+
duration?: string
|
|
371
|
+
metadata?: TaskMetadata
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
export interface TaskMetadata {
|
|
375
|
+
domain?: string
|
|
376
|
+
complexity?: 'low' | 'medium' | 'high'
|
|
377
|
+
agent?: string
|
|
378
|
+
tags?: string[]
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Result of analyzing a task to determine routing and complexity.
|
|
383
|
+
*/
|
|
384
|
+
export interface TaskAnalysis {
|
|
385
|
+
/** Primary domain detected (e.g., 'frontend', 'backend', 'devops') */
|
|
386
|
+
primaryDomain: string
|
|
387
|
+
/** Confidence score (0-1) */
|
|
388
|
+
confidence: number
|
|
389
|
+
/** Semantic analysis of task description */
|
|
390
|
+
semantic: SemanticAnalysis
|
|
391
|
+
/** Historical analysis from past similar tasks */
|
|
392
|
+
historical: HistoricalAnalysis
|
|
393
|
+
/** Complexity level */
|
|
394
|
+
complexity: 'low' | 'medium' | 'high'
|
|
395
|
+
/** Project-specific data used in analysis */
|
|
396
|
+
projectData: ProjectAnalysisData
|
|
397
|
+
/** Keywords that matched domain patterns */
|
|
398
|
+
matchedKeywords: string[]
|
|
399
|
+
/** Human-readable reason for domain assignment */
|
|
400
|
+
reason: string
|
|
401
|
+
/** Alternative domains considered */
|
|
402
|
+
alternatives: string[]
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export interface SemanticAnalysis {
|
|
406
|
+
/** Detected intent */
|
|
407
|
+
intent: string
|
|
408
|
+
/** Key entities in the task */
|
|
409
|
+
entities: string[]
|
|
410
|
+
/** Sentiment score */
|
|
411
|
+
sentiment: number
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
export interface HistoricalAnalysis {
|
|
415
|
+
/** Similar past tasks count */
|
|
416
|
+
similarTasksCount: number
|
|
417
|
+
/** Average duration of similar tasks */
|
|
418
|
+
avgDuration: string | null
|
|
419
|
+
/** Success rate of similar tasks */
|
|
420
|
+
successRate: number
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
export interface ProjectAnalysisData {
|
|
424
|
+
/** Available agents */
|
|
425
|
+
availableAgents: string[]
|
|
426
|
+
/** Stack technologies */
|
|
427
|
+
stack: string[]
|
|
428
|
+
/** Recent activity domains */
|
|
429
|
+
recentDomains: string[]
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// ============================================
|
|
433
|
+
// Config System
|
|
434
|
+
// ============================================
|
|
435
|
+
|
|
436
|
+
export interface ProjectConfig {
|
|
437
|
+
projectId: string
|
|
438
|
+
name?: string
|
|
439
|
+
createdAt: string
|
|
440
|
+
updatedAt: string
|
|
441
|
+
settings?: ProjectSettings
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
export interface ProjectSettings {
|
|
445
|
+
autoCommit?: boolean
|
|
446
|
+
commitFooter?: string
|
|
447
|
+
branchNaming?: string
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
export interface GlobalConfig {
|
|
451
|
+
version: string
|
|
452
|
+
projects: Record<string, ProjectConfig>
|
|
453
|
+
settings: GlobalSettings
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
export interface GlobalSettings {
|
|
457
|
+
defaultAuthor?: string
|
|
458
|
+
theme?: 'light' | 'dark'
|
|
459
|
+
telemetry?: boolean
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// ============================================
|
|
463
|
+
// Template System
|
|
464
|
+
// ============================================
|
|
465
|
+
|
|
466
|
+
export interface Template {
|
|
467
|
+
name: string
|
|
468
|
+
content: string
|
|
469
|
+
frontmatter: TemplateFrontmatter
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
export interface TemplateFrontmatter {
|
|
473
|
+
name: string
|
|
474
|
+
description?: string
|
|
475
|
+
category?: string
|
|
476
|
+
allowedTools?: string[]
|
|
477
|
+
validation?: ValidationRule[]
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
export interface ValidationRule {
|
|
481
|
+
type: string
|
|
482
|
+
field?: string
|
|
483
|
+
message?: string
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// ============================================
|
|
487
|
+
// Utility Types
|
|
488
|
+
// ============================================
|
|
489
|
+
|
|
490
|
+
export type AsyncFunction<T = unknown> = (...args: unknown[]) => Promise<T>
|
|
491
|
+
|
|
492
|
+
export type MaybePromise<T> = T | Promise<T>
|
|
493
|
+
|
|
494
|
+
export interface FileInfo {
|
|
495
|
+
path: string
|
|
496
|
+
content: string
|
|
497
|
+
mtime?: Date
|
|
498
|
+
size?: number
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
export interface LogLevel {
|
|
502
|
+
debug: 0
|
|
503
|
+
info: 1
|
|
504
|
+
warn: 2
|
|
505
|
+
error: 3
|
|
506
|
+
}
|
|
@@ -3,9 +3,53 @@
|
|
|
3
3
|
* Fallback when terminal doesn't support RGB colors
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
import chalk from 'chalk'
|
|
7
|
+
|
|
8
|
+
type ChalkFunction = typeof chalk.green
|
|
9
|
+
|
|
10
|
+
interface Colors {
|
|
11
|
+
success: ChalkFunction
|
|
12
|
+
error: ChalkFunction
|
|
13
|
+
warning: ChalkFunction
|
|
14
|
+
info: ChalkFunction
|
|
15
|
+
ship: ChalkFunction
|
|
16
|
+
celebrate: ChalkFunction
|
|
17
|
+
focus: ChalkFunction
|
|
18
|
+
idea: ChalkFunction
|
|
19
|
+
progress: ChalkFunction
|
|
20
|
+
task: ChalkFunction
|
|
21
|
+
primary: ChalkFunction
|
|
22
|
+
secondary: ChalkFunction
|
|
23
|
+
text: ChalkFunction
|
|
24
|
+
subtext: ChalkFunction
|
|
25
|
+
dim: ChalkFunction
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface Frames {
|
|
29
|
+
rocket: string[]
|
|
30
|
+
sparkles: string[]
|
|
31
|
+
loading: string[]
|
|
32
|
+
progress: string[]
|
|
33
|
+
celebration: string[]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface Banners {
|
|
37
|
+
ship: string
|
|
38
|
+
success: string
|
|
39
|
+
error: string
|
|
40
|
+
welcome: string
|
|
41
|
+
cleanup: string
|
|
42
|
+
focus: string
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
interface RecapData {
|
|
46
|
+
currentTask?: string | null
|
|
47
|
+
shippedCount: number
|
|
48
|
+
queuedCount: number
|
|
49
|
+
ideasCount: number
|
|
50
|
+
}
|
|
7
51
|
|
|
8
|
-
const colors = {
|
|
52
|
+
export const colors: Colors = {
|
|
9
53
|
success: chalk.green,
|
|
10
54
|
error: chalk.red,
|
|
11
55
|
warning: chalk.yellow,
|
|
@@ -23,7 +67,7 @@ const colors = {
|
|
|
23
67
|
dim: chalk.gray,
|
|
24
68
|
}
|
|
25
69
|
|
|
26
|
-
const frames = {
|
|
70
|
+
export const frames: Frames = {
|
|
27
71
|
rocket: [
|
|
28
72
|
' 🚀 ',
|
|
29
73
|
' 🚀 ',
|
|
@@ -55,7 +99,7 @@ const frames = {
|
|
|
55
99
|
celebration: ['🎉', '🎊', '✨', '🌟', '⭐', '💫', '🎆', '🎇'],
|
|
56
100
|
}
|
|
57
101
|
|
|
58
|
-
const banners = {
|
|
102
|
+
export const banners: Banners = {
|
|
59
103
|
ship: `
|
|
60
104
|
╔════════════════════════════════════════════╗
|
|
61
105
|
║ 🚀 ${colors.ship.bold('S H I P P E D !')} 🚀 ║
|
|
@@ -82,15 +126,19 @@ ${colors.focus.bold(' 🎯 FOCUS MODE 🎯 ')}
|
|
|
82
126
|
${colors.focus('━━━━━━━━━━━━━━━━━━━━━━━')}`,
|
|
83
127
|
}
|
|
84
128
|
|
|
85
|
-
|
|
86
|
-
|
|
129
|
+
function sleep(ms: number): Promise<void> {
|
|
130
|
+
return new Promise((resolve) => setTimeout(resolve, ms))
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export async function animate(frameList: string[], duration = 100): Promise<void> {
|
|
134
|
+
for (const frame of frameList) {
|
|
87
135
|
process.stdout.write('\r' + frame)
|
|
88
136
|
await sleep(duration)
|
|
89
137
|
}
|
|
90
138
|
process.stdout.write('\r' + ' '.repeat(30) + '\r')
|
|
91
139
|
}
|
|
92
140
|
|
|
93
|
-
async function typeWriter(text, delay = 30) {
|
|
141
|
+
export async function typeWriter(text: string, delay = 30): Promise<void> {
|
|
94
142
|
for (let i = 0; i <= text.length; i++) {
|
|
95
143
|
process.stdout.write('\r' + text.slice(0, i) + (i < text.length ? '▋' : ''))
|
|
96
144
|
await sleep(delay)
|
|
@@ -98,7 +146,7 @@ async function typeWriter(text, delay = 30) {
|
|
|
98
146
|
process.stdout.write('\n')
|
|
99
147
|
}
|
|
100
148
|
|
|
101
|
-
async function progressBar(duration = 1000, label = 'Processing') {
|
|
149
|
+
export async function progressBar(duration = 1000, label = 'Processing'): Promise<void> {
|
|
102
150
|
const steps = 20
|
|
103
151
|
const stepDuration = duration / steps
|
|
104
152
|
|
|
@@ -113,7 +161,7 @@ async function progressBar(duration = 1000, label = 'Processing') {
|
|
|
113
161
|
process.stdout.write('\n')
|
|
114
162
|
}
|
|
115
163
|
|
|
116
|
-
async function sparkle(message) {
|
|
164
|
+
export async function sparkle(message: string): Promise<void> {
|
|
117
165
|
const sparkles = ['✨', '⭐', '💫', '🌟']
|
|
118
166
|
let output = ''
|
|
119
167
|
|
|
@@ -129,22 +177,18 @@ async function sparkle(message) {
|
|
|
129
177
|
console.log(output)
|
|
130
178
|
}
|
|
131
179
|
|
|
132
|
-
function
|
|
133
|
-
return new Promise((resolve) => setTimeout(resolve, ms))
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function formatShip(feature, count) {
|
|
180
|
+
export function formatShip(feature: string, count: number): string {
|
|
137
181
|
const banner = banners.ship
|
|
138
182
|
const stats = `
|
|
139
183
|
${colors.text('Feature:')} ${colors.ship.bold(feature)}
|
|
140
|
-
${colors.text('Total shipped:')} ${colors.success.bold(count)}
|
|
184
|
+
${colors.text('Total shipped:')} ${colors.success.bold(String(count))}
|
|
141
185
|
${colors.text('Velocity:')} ${colors.celebrate('🔥 On fire!')}
|
|
142
186
|
`
|
|
143
187
|
|
|
144
188
|
return banner + stats
|
|
145
189
|
}
|
|
146
190
|
|
|
147
|
-
function formatFocus(task, timestamp) {
|
|
191
|
+
export function formatFocus(task: string, timestamp: string): string {
|
|
148
192
|
const banner = banners.focus
|
|
149
193
|
const info = `
|
|
150
194
|
${colors.text('Current task:')} ${colors.focus.bold(task)}
|
|
@@ -154,15 +198,15 @@ ${colors.dim('Started:')} ${colors.subtext(timestamp)}
|
|
|
154
198
|
return banner + info
|
|
155
199
|
}
|
|
156
200
|
|
|
157
|
-
function formatSuccess(message) {
|
|
201
|
+
export function formatSuccess(message: string): string {
|
|
158
202
|
return `${colors.success('✅')} ${colors.text(message)}`
|
|
159
203
|
}
|
|
160
204
|
|
|
161
|
-
function formatError(message) {
|
|
205
|
+
export function formatError(message: string): string {
|
|
162
206
|
return `${colors.error('❌')} ${colors.text(message)}`
|
|
163
207
|
}
|
|
164
208
|
|
|
165
|
-
function formatIdea(idea) {
|
|
209
|
+
export function formatIdea(idea: string): string {
|
|
166
210
|
return `
|
|
167
211
|
${colors.idea('💡 Idea captured!')}
|
|
168
212
|
${colors.text('―'.repeat(30))}
|
|
@@ -172,19 +216,19 @@ ${colors.dim('Added to your ideas backlog')}
|
|
|
172
216
|
`
|
|
173
217
|
}
|
|
174
218
|
|
|
175
|
-
function formatCleanup(filesRemoved, tasksArchived, spaceFeed) {
|
|
219
|
+
export function formatCleanup(filesRemoved: number, tasksArchived: number, spaceFeed: number): string {
|
|
176
220
|
return `
|
|
177
221
|
${banners.cleanup}
|
|
178
222
|
|
|
179
|
-
${colors.text('🗑️ Files removed:')} ${colors.success.bold(filesRemoved)}
|
|
180
|
-
${colors.text('📦 Tasks archived:')} ${colors.success.bold(tasksArchived)}
|
|
223
|
+
${colors.text('🗑️ Files removed:')} ${colors.success.bold(String(filesRemoved))}
|
|
224
|
+
${colors.text('📦 Tasks archived:')} ${colors.success.bold(String(tasksArchived))}
|
|
181
225
|
${colors.text('💾 Space freed:')} ${colors.success.bold(spaceFeed + ' MB')}
|
|
182
226
|
|
|
183
227
|
${colors.celebrate('✨ Your project is clean and lean!')}
|
|
184
228
|
`
|
|
185
229
|
}
|
|
186
230
|
|
|
187
|
-
function formatRecap(data) {
|
|
231
|
+
export function formatRecap(data: RecapData): string {
|
|
188
232
|
const divider = colors.primary('━'.repeat(40))
|
|
189
233
|
|
|
190
234
|
return `
|
|
@@ -193,16 +237,17 @@ ${colors.primary.bold('📊 PROJECT RECAP')}
|
|
|
193
237
|
${divider}
|
|
194
238
|
|
|
195
239
|
${colors.text('🎯 Current focus:')} ${data.currentTask || colors.dim('No active task')}
|
|
196
|
-
${colors.text('🚀 Shipped this week:')} ${colors.success.bold(data.shippedCount)}
|
|
197
|
-
${colors.text('📝 Queued tasks:')} ${colors.info.bold(data.queuedCount)}
|
|
198
|
-
${colors.text('💡 Ideas captured:')} ${colors.idea.bold(data.ideasCount)}
|
|
240
|
+
${colors.text('🚀 Shipped this week:')} ${colors.success.bold(String(data.shippedCount))}
|
|
241
|
+
${colors.text('📝 Queued tasks:')} ${colors.info.bold(String(data.queuedCount))}
|
|
242
|
+
${colors.text('💡 Ideas captured:')} ${colors.idea.bold(String(data.ideasCount))}
|
|
199
243
|
|
|
200
244
|
${divider}
|
|
201
245
|
${colors.dim('Keep shipping! 🚀')}
|
|
202
246
|
`
|
|
203
247
|
}
|
|
204
248
|
|
|
205
|
-
|
|
249
|
+
// Default export for CommonJS compatibility
|
|
250
|
+
export default {
|
|
206
251
|
colors,
|
|
207
252
|
frames,
|
|
208
253
|
banners,
|
|
@@ -216,5 +261,6 @@ module.exports = {
|
|
|
216
261
|
formatError,
|
|
217
262
|
formatIdea,
|
|
218
263
|
formatCleanup,
|
|
219
|
-
formatRecap
|
|
264
|
+
formatRecap
|
|
220
265
|
}
|
|
266
|
+
|