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.
Files changed (391) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +81 -25
  3. package/bin/dev.js +1 -1
  4. package/bin/generate-views.js +209 -0
  5. package/bin/migrate-to-json.js +742 -0
  6. package/bin/prjct +5 -5
  7. package/bin/serve.js +226 -50
  8. package/core/__tests__/agentic/{memory-system.test.js → memory-system.test.ts} +12 -23
  9. package/core/__tests__/agentic/{plan-mode.test.js → plan-mode.test.ts} +26 -24
  10. package/core/__tests__/agentic/{prompt-builder.test.js → prompt-builder.test.ts} +3 -8
  11. package/core/__tests__/utils/{date-helper.test.js → date-helper.test.ts} +19 -30
  12. package/core/__tests__/utils/{output.test.js → output.test.ts} +12 -24
  13. package/core/agentic/agent-router.ts +137 -0
  14. package/core/agentic/chain-of-thought.ts +228 -0
  15. package/core/agentic/command-executor/command-executor.ts +384 -0
  16. package/core/agentic/command-executor/index.ts +16 -0
  17. package/core/agentic/command-executor/status-signal.ts +38 -0
  18. package/core/agentic/command-executor/types.ts +79 -0
  19. package/core/agentic/command-executor.ts +8 -0
  20. package/core/agentic/{context-builder.js → context-builder.ts} +92 -81
  21. package/core/agentic/context-filter.ts +365 -0
  22. package/core/agentic/ground-truth/index.ts +76 -0
  23. package/core/agentic/ground-truth/types.ts +33 -0
  24. package/core/agentic/ground-truth/utils.ts +48 -0
  25. package/core/agentic/ground-truth/verifiers/analyze.ts +54 -0
  26. package/core/agentic/ground-truth/verifiers/done.ts +75 -0
  27. package/core/agentic/ground-truth/verifiers/feature.ts +70 -0
  28. package/core/agentic/ground-truth/verifiers/index.ts +37 -0
  29. package/core/agentic/ground-truth/verifiers/init.ts +52 -0
  30. package/core/agentic/ground-truth/verifiers/now.ts +57 -0
  31. package/core/agentic/ground-truth/verifiers/ship.ts +85 -0
  32. package/core/agentic/ground-truth/verifiers/spec.ts +45 -0
  33. package/core/agentic/ground-truth/verifiers/sync.ts +47 -0
  34. package/core/agentic/ground-truth/verifiers.ts +6 -0
  35. package/core/agentic/ground-truth.ts +8 -0
  36. package/core/agentic/loop-detector/error-analysis.ts +97 -0
  37. package/core/agentic/loop-detector/hallucination.ts +71 -0
  38. package/core/agentic/loop-detector/index.ts +41 -0
  39. package/core/agentic/loop-detector/loop-detector.ts +222 -0
  40. package/core/agentic/loop-detector/types.ts +66 -0
  41. package/core/agentic/loop-detector.ts +8 -0
  42. package/core/agentic/memory-system/history.ts +53 -0
  43. package/core/agentic/memory-system/index.ts +192 -0
  44. package/core/agentic/memory-system/patterns.ts +156 -0
  45. package/core/agentic/memory-system/semantic-memories.ts +277 -0
  46. package/core/agentic/memory-system/session.ts +21 -0
  47. package/core/agentic/memory-system/types.ts +159 -0
  48. package/core/agentic/memory-system.ts +8 -0
  49. package/core/agentic/parallel-tools.ts +165 -0
  50. package/core/agentic/plan-mode/approval.ts +57 -0
  51. package/core/agentic/plan-mode/constants.ts +44 -0
  52. package/core/agentic/plan-mode/index.ts +28 -0
  53. package/core/agentic/plan-mode/plan-mode.ts +406 -0
  54. package/core/agentic/plan-mode/types.ts +193 -0
  55. package/core/agentic/plan-mode.ts +8 -0
  56. package/core/agentic/prompt-builder.ts +566 -0
  57. package/core/agentic/response-templates.ts +164 -0
  58. package/core/agentic/semantic-compression.ts +273 -0
  59. package/core/agentic/services.ts +206 -0
  60. package/core/agentic/smart-context.ts +476 -0
  61. package/core/agentic/{template-loader.js → template-loader.ts} +27 -16
  62. package/core/agentic/think-blocks.ts +202 -0
  63. package/core/agentic/tool-registry.ts +119 -0
  64. package/core/agentic/validation-rules.ts +313 -0
  65. package/core/agents/index.ts +28 -0
  66. package/core/agents/performance.ts +444 -0
  67. package/core/agents/types.ts +126 -0
  68. package/core/bus/{index.js → index.ts} +57 -61
  69. package/core/command-registry/categories.ts +23 -0
  70. package/core/command-registry/commands.ts +15 -0
  71. package/core/command-registry/core-commands.ts +319 -0
  72. package/core/command-registry/index.ts +158 -0
  73. package/core/command-registry/optional-commands.ts +119 -0
  74. package/core/command-registry/setup-commands.ts +53 -0
  75. package/core/command-registry/types.ts +59 -0
  76. package/core/command-registry.ts +9 -0
  77. package/core/commands/analysis.ts +298 -0
  78. package/core/commands/analytics.ts +288 -0
  79. package/core/commands/base.ts +273 -0
  80. package/core/commands/index.ts +211 -0
  81. package/core/commands/maintenance.ts +226 -0
  82. package/core/commands/planning.ts +311 -0
  83. package/core/commands/setup.ts +309 -0
  84. package/core/commands/shipping.ts +188 -0
  85. package/core/commands/types.ts +183 -0
  86. package/core/commands/workflow.ts +226 -0
  87. package/core/commands.ts +11 -0
  88. package/core/constants/formats.ts +187 -0
  89. package/core/constants/index.ts +7 -0
  90. package/core/{context-sync.js → context-sync.ts} +59 -26
  91. package/core/data/agents-manager.ts +76 -0
  92. package/core/data/analysis-manager.ts +83 -0
  93. package/core/data/base-manager.ts +156 -0
  94. package/core/data/ideas-manager.ts +81 -0
  95. package/core/data/index.ts +32 -0
  96. package/core/data/outcomes-manager.ts +96 -0
  97. package/core/data/project-manager.ts +75 -0
  98. package/core/data/roadmap-manager.ts +118 -0
  99. package/core/data/shipped-manager.ts +65 -0
  100. package/core/data/state-manager.ts +214 -0
  101. package/core/domain/{agent-generator.js → agent-generator.ts} +77 -57
  102. package/core/domain/{agent-loader.js → agent-loader.ts} +65 -56
  103. package/core/domain/{agent-matcher.js → agent-matcher.ts} +51 -24
  104. package/core/domain/{agent-validator.js → agent-validator.ts} +70 -37
  105. package/core/domain/{analyzer.js → analyzer.ts} +91 -85
  106. package/core/domain/{architect-session.js → architect-session.ts} +49 -34
  107. package/core/domain/{architecture-generator.js → architecture-generator.ts} +25 -13
  108. package/core/domain/{context-estimator.js → context-estimator.ts} +57 -36
  109. package/core/domain/{product-standards.js → product-standards.ts} +40 -26
  110. package/core/domain/{smart-cache.js → smart-cache.ts} +39 -30
  111. package/core/domain/{snapshot-manager.js → snapshot-manager.ts} +103 -100
  112. package/core/domain/{task-analyzer.js → task-analyzer.ts} +82 -43
  113. package/core/domain/task-stack/index.ts +19 -0
  114. package/core/domain/task-stack/parser.ts +86 -0
  115. package/core/domain/task-stack/storage.ts +123 -0
  116. package/core/domain/task-stack/task-stack.ts +340 -0
  117. package/core/domain/task-stack/types.ts +51 -0
  118. package/core/domain/task-stack.ts +8 -0
  119. package/core/{index.js → index.ts} +61 -18
  120. package/core/infrastructure/{agent-detector.js → agent-detector.ts} +55 -19
  121. package/core/infrastructure/agents/{claude-agent.js → claude-agent.ts} +61 -21
  122. package/core/infrastructure/{author-detector.js → author-detector.ts} +42 -49
  123. package/core/infrastructure/{capability-installer.js → capability-installer.ts} +51 -27
  124. package/core/infrastructure/{command-installer.js → command-installer/command-installer.ts} +43 -144
  125. package/core/infrastructure/command-installer/global-config.ts +106 -0
  126. package/core/infrastructure/command-installer/index.ts +25 -0
  127. package/core/infrastructure/command-installer/types.ts +41 -0
  128. package/core/infrastructure/command-installer.ts +8 -0
  129. package/core/infrastructure/{config-manager.js → config-manager.ts} +60 -80
  130. package/core/infrastructure/{editors-config.js → editors-config.ts} +33 -31
  131. package/core/infrastructure/legacy-installer-detector/cleanup.ts +216 -0
  132. package/core/infrastructure/legacy-installer-detector/detection.ts +95 -0
  133. package/core/infrastructure/legacy-installer-detector/index.ts +171 -0
  134. package/core/infrastructure/legacy-installer-detector/migration.ts +87 -0
  135. package/core/infrastructure/legacy-installer-detector/types.ts +42 -0
  136. package/core/infrastructure/legacy-installer-detector.ts +7 -0
  137. package/core/infrastructure/migrator/file-operations.ts +125 -0
  138. package/core/infrastructure/migrator/index.ts +288 -0
  139. package/core/infrastructure/migrator/project-scanner.ts +89 -0
  140. package/core/infrastructure/migrator/reports.ts +117 -0
  141. package/core/infrastructure/migrator/types.ts +124 -0
  142. package/core/infrastructure/migrator/validation.ts +94 -0
  143. package/core/infrastructure/migrator/version-migration.ts +117 -0
  144. package/core/infrastructure/migrator.ts +10 -0
  145. package/core/infrastructure/{path-manager.js → path-manager.ts} +51 -91
  146. package/core/infrastructure/session-manager/index.ts +23 -0
  147. package/core/infrastructure/session-manager/migration.ts +88 -0
  148. package/core/infrastructure/session-manager/session-manager.ts +307 -0
  149. package/core/infrastructure/session-manager/types.ts +45 -0
  150. package/core/infrastructure/session-manager.ts +8 -0
  151. package/core/infrastructure/{setup.js → setup.ts} +29 -21
  152. package/core/infrastructure/{update-checker.js → update-checker.ts} +40 -18
  153. package/core/outcomes/analyzer.ts +333 -0
  154. package/core/outcomes/index.ts +34 -0
  155. package/core/outcomes/recorder.ts +194 -0
  156. package/core/outcomes/types.ts +145 -0
  157. package/core/plugin/{hooks.js → hooks.ts} +56 -58
  158. package/core/plugin/{index.js → index.ts} +19 -8
  159. package/core/plugin/{loader.js → loader.ts} +87 -69
  160. package/core/plugin/{registry.js → registry.ts} +49 -45
  161. package/core/plugins/{webhook.js → webhook.ts} +43 -27
  162. package/core/schemas/agents.ts +27 -0
  163. package/core/schemas/analysis.ts +41 -0
  164. package/core/schemas/ideas.ts +83 -0
  165. package/core/schemas/index.ts +73 -0
  166. package/core/schemas/outcomes.ts +22 -0
  167. package/core/schemas/project.ts +26 -0
  168. package/core/schemas/roadmap.ts +90 -0
  169. package/core/schemas/shipped.ts +82 -0
  170. package/core/schemas/state.ts +107 -0
  171. package/core/session/index.ts +17 -0
  172. package/core/session/{metrics.js → metrics.ts} +64 -46
  173. package/core/session/{index.js → session-manager.ts} +51 -117
  174. package/core/session/types.ts +29 -0
  175. package/core/session/utils.ts +57 -0
  176. package/core/state/index.ts +25 -0
  177. package/core/state/manager.ts +376 -0
  178. package/core/state/types.ts +185 -0
  179. package/core/tsconfig.json +22 -0
  180. package/core/types/index.ts +506 -0
  181. package/core/utils/{animations.js → animations.ts} +74 -28
  182. package/core/utils/{branding.js → branding.ts} +29 -4
  183. package/core/utils/{date-helper.js → date-helper.ts} +31 -74
  184. package/core/utils/file-helper.ts +262 -0
  185. package/core/utils/{jsonl-helper.js → jsonl-helper.ts} +71 -107
  186. package/core/utils/{logger.js → logger.ts} +24 -12
  187. package/core/utils/{output.js → output.ts} +25 -13
  188. package/core/utils/{project-capabilities.js → project-capabilities.ts} +31 -18
  189. package/core/utils/{session-helper.js → session-helper.ts} +79 -66
  190. package/core/utils/{version.js → version.ts} +23 -31
  191. package/core/view-generator.ts +536 -0
  192. package/package.json +23 -17
  193. package/packages/shared/.turbo/turbo-build.log +14 -0
  194. package/packages/shared/dist/index.d.ts +8 -613
  195. package/packages/shared/dist/index.d.ts.map +1 -0
  196. package/packages/shared/dist/index.js +4110 -118
  197. package/packages/shared/dist/schemas.d.ts +408 -0
  198. package/packages/shared/dist/schemas.d.ts.map +1 -0
  199. package/packages/shared/dist/types.d.ts +144 -0
  200. package/packages/shared/dist/types.d.ts.map +1 -0
  201. package/packages/shared/dist/unified.d.ts +139 -0
  202. package/packages/shared/dist/unified.d.ts.map +1 -0
  203. package/packages/shared/dist/utils.d.ts +60 -0
  204. package/packages/shared/dist/utils.d.ts.map +1 -0
  205. package/packages/shared/package.json +4 -4
  206. package/packages/shared/src/index.ts +1 -0
  207. package/packages/shared/src/unified.ts +174 -0
  208. package/packages/web/app/api/claude/sessions/route.ts +1 -1
  209. package/packages/web/app/api/claude/status/route.ts +1 -1
  210. package/packages/web/app/api/migrate/route.ts +46 -0
  211. package/packages/web/app/api/projects/[id]/route.ts +1 -1
  212. package/packages/web/app/api/projects/[id]/stats/route.ts +30 -2
  213. package/packages/web/app/api/projects/[id]/status/route.ts +1 -1
  214. package/packages/web/app/api/projects/route.ts +1 -1
  215. package/packages/web/app/api/settings/route.ts +97 -0
  216. package/packages/web/app/api/v2/projects/[id]/unified/route.ts +57 -0
  217. package/packages/web/app/globals.css +38 -0
  218. package/packages/web/app/layout.tsx +10 -2
  219. package/packages/web/app/page.tsx +9 -224
  220. package/packages/web/app/project/[id]/page.tsx +191 -63
  221. package/packages/web/app/project/[id]/stats/loading.tsx +43 -0
  222. package/packages/web/app/project/[id]/stats/page.tsx +204 -163
  223. package/packages/web/app/settings/page.tsx +222 -2
  224. package/packages/web/components/ActivityTimeline/ActivityTimeline.constants.ts +2 -0
  225. package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +50 -0
  226. package/packages/web/components/ActivityTimeline/ActivityTimeline.types.ts +8 -0
  227. package/packages/web/components/ActivityTimeline/hooks/index.ts +2 -0
  228. package/packages/web/components/ActivityTimeline/hooks/useExpandable.ts +9 -0
  229. package/packages/web/components/ActivityTimeline/hooks/useGroupedEvents.ts +23 -0
  230. package/packages/web/components/ActivityTimeline/index.ts +2 -0
  231. package/packages/web/components/AgentsCard/AgentsCard.tsx +63 -0
  232. package/packages/web/components/AgentsCard/AgentsCard.types.ts +13 -0
  233. package/packages/web/components/AgentsCard/index.ts +2 -0
  234. package/packages/web/components/AppSidebar/AppSidebar.tsx +190 -0
  235. package/packages/web/components/AppSidebar/index.ts +1 -0
  236. package/packages/web/components/BackLink/BackLink.tsx +18 -0
  237. package/packages/web/components/BackLink/BackLink.types.ts +5 -0
  238. package/packages/web/components/BackLink/index.ts +2 -0
  239. package/packages/web/components/BentoCard/BentoCard.constants.ts +16 -0
  240. package/packages/web/components/BentoCard/BentoCard.tsx +47 -0
  241. package/packages/web/components/BentoCard/BentoCard.types.ts +15 -0
  242. package/packages/web/components/BentoCard/index.ts +2 -0
  243. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.constants.ts +9 -0
  244. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.tsx +18 -0
  245. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.types.ts +5 -0
  246. package/packages/web/components/BentoCardSkeleton/index.ts +2 -0
  247. package/packages/web/components/{stats → BentoGrid}/BentoGrid.tsx +4 -8
  248. package/packages/web/components/BentoGrid/BentoGrid.types.ts +4 -0
  249. package/packages/web/components/BentoGrid/index.ts +2 -0
  250. package/packages/web/components/CommandButton/index.ts +1 -0
  251. package/packages/web/components/ConnectionStatus/index.ts +1 -0
  252. package/packages/web/components/DashboardContent/DashboardContent.tsx +254 -0
  253. package/packages/web/components/DashboardContent/index.ts +1 -0
  254. package/packages/web/components/DateGroup/DateGroup.tsx +18 -0
  255. package/packages/web/components/DateGroup/DateGroup.types.ts +6 -0
  256. package/packages/web/components/DateGroup/DateGroup.utils.ts +11 -0
  257. package/packages/web/components/DateGroup/index.ts +2 -0
  258. package/packages/web/components/{stats → EmptyState}/EmptyState.tsx +1 -10
  259. package/packages/web/components/EmptyState/EmptyState.types.ts +10 -0
  260. package/packages/web/components/EmptyState/index.ts +2 -0
  261. package/packages/web/components/EventRow/EventRow.constants.ts +10 -0
  262. package/packages/web/components/EventRow/EventRow.tsx +49 -0
  263. package/packages/web/components/EventRow/EventRow.types.ts +7 -0
  264. package/packages/web/components/EventRow/EventRow.utils.ts +49 -0
  265. package/packages/web/components/EventRow/index.ts +2 -0
  266. package/packages/web/components/ExpandButton/ExpandButton.tsx +18 -0
  267. package/packages/web/components/ExpandButton/ExpandButton.types.ts +6 -0
  268. package/packages/web/components/ExpandButton/index.ts +2 -0
  269. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.tsx +14 -0
  270. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.types.ts +5 -0
  271. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.utils.ts +13 -0
  272. package/packages/web/components/HealthGradientBackground/index.ts +2 -0
  273. package/packages/web/components/HeroSection/HeroSection.tsx +55 -0
  274. package/packages/web/components/HeroSection/HeroSection.types.ts +14 -0
  275. package/packages/web/components/HeroSection/HeroSection.utils.ts +7 -0
  276. package/packages/web/components/HeroSection/hooks/index.ts +2 -0
  277. package/packages/web/components/HeroSection/hooks/useCountUp.ts +45 -0
  278. package/packages/web/components/HeroSection/hooks/useWeeklyActivity.ts +18 -0
  279. package/packages/web/components/HeroSection/index.ts +2 -0
  280. package/packages/web/components/{stats → IdeasCard}/IdeasCard.tsx +3 -14
  281. package/packages/web/components/IdeasCard/IdeasCard.types.ts +9 -0
  282. package/packages/web/components/IdeasCard/index.ts +2 -0
  283. package/packages/web/components/InsightMessage/InsightMessage.tsx +9 -0
  284. package/packages/web/components/InsightMessage/InsightMessage.types.ts +3 -0
  285. package/packages/web/components/InsightMessage/index.ts +2 -0
  286. package/packages/web/components/Logo/index.ts +1 -0
  287. package/packages/web/components/MarkdownContent/index.ts +1 -0
  288. package/packages/web/components/NowCard/NowCard.tsx +93 -0
  289. package/packages/web/components/NowCard/NowCard.types.ts +15 -0
  290. package/packages/web/components/NowCard/index.ts +2 -0
  291. package/packages/web/components/ProgressRing/ProgressRing.constants.ts +20 -0
  292. package/packages/web/components/{stats → ProgressRing}/ProgressRing.tsx +4 -27
  293. package/packages/web/components/ProgressRing/ProgressRing.types.ts +11 -0
  294. package/packages/web/components/ProgressRing/index.ts +2 -0
  295. package/packages/web/components/ProjectAvatar/index.ts +1 -0
  296. package/packages/web/components/Providers/index.ts +1 -0
  297. package/packages/web/components/QueueCard/QueueCard.tsx +72 -0
  298. package/packages/web/components/QueueCard/QueueCard.types.ts +11 -0
  299. package/packages/web/components/QueueCard/QueueCard.utils.ts +12 -0
  300. package/packages/web/components/QueueCard/index.ts +2 -0
  301. package/packages/web/components/{stats → RoadmapCard}/RoadmapCard.tsx +3 -23
  302. package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +15 -0
  303. package/packages/web/components/RoadmapCard/index.ts +2 -0
  304. package/packages/web/components/{stats → ShipsCard}/ShipsCard.tsx +4 -22
  305. package/packages/web/components/ShipsCard/ShipsCard.types.ts +12 -0
  306. package/packages/web/components/ShipsCard/ShipsCard.utils.ts +4 -0
  307. package/packages/web/components/ShipsCard/index.ts +2 -0
  308. package/packages/web/components/{stats → SparklineChart}/SparklineChart.tsx +1 -7
  309. package/packages/web/components/SparklineChart/SparklineChart.types.ts +6 -0
  310. package/packages/web/components/SparklineChart/index.ts +2 -0
  311. package/packages/web/components/StreakCard/StreakCard.constants.ts +2 -0
  312. package/packages/web/components/{stats → StreakCard}/StreakCard.tsx +5 -11
  313. package/packages/web/components/StreakCard/StreakCard.types.ts +4 -0
  314. package/packages/web/components/StreakCard/index.ts +2 -0
  315. package/packages/web/components/TasksCounter/TasksCounter.tsx +14 -0
  316. package/packages/web/components/TasksCounter/TasksCounter.types.ts +3 -0
  317. package/packages/web/components/TasksCounter/index.ts +2 -0
  318. package/packages/web/components/TechStackBadges/index.ts +1 -0
  319. package/packages/web/components/{TerminalTab.tsx → TerminalTabs/TerminalTab.tsx} +11 -0
  320. package/packages/web/components/{TerminalTabs.tsx → TerminalTabs/TerminalTabs.tsx} +29 -28
  321. package/packages/web/components/TerminalTabs/index.ts +1 -0
  322. package/packages/web/components/VelocityBadge/VelocityBadge.tsx +27 -0
  323. package/packages/web/components/VelocityBadge/VelocityBadge.types.ts +3 -0
  324. package/packages/web/components/VelocityBadge/index.ts +2 -0
  325. package/packages/web/components/VelocityCard/VelocityCard.tsx +71 -0
  326. package/packages/web/components/VelocityCard/VelocityCard.types.ts +7 -0
  327. package/packages/web/components/VelocityCard/index.ts +2 -0
  328. package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +13 -0
  329. package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +3 -0
  330. package/packages/web/components/WeeklySparkline/index.ts +2 -0
  331. package/packages/web/components/ui/input.tsx +21 -0
  332. package/packages/web/context/TerminalTabsContext.tsx +46 -1
  333. package/packages/web/hooks/useClaudeTerminal.ts +71 -21
  334. package/packages/web/hooks/useProjectStats.ts +55 -0
  335. package/packages/web/hooks/useProjects.ts +6 -6
  336. package/packages/web/lib/actions/projects.ts +15 -0
  337. package/packages/web/lib/json-loader.ts +630 -0
  338. package/packages/web/lib/services/index.ts +9 -0
  339. package/packages/web/lib/services/migration.server.ts +600 -0
  340. package/packages/web/lib/services/projects.server.ts +52 -0
  341. package/packages/web/lib/services/stats.server.ts +264 -0
  342. package/packages/web/lib/unified-loader.ts +396 -0
  343. package/packages/web/package.json +10 -7
  344. package/packages/web/server.ts +58 -8
  345. package/templates/commands/done.md +76 -32
  346. package/templates/commands/feature.md +121 -47
  347. package/templates/commands/idea.md +81 -8
  348. package/templates/commands/now.md +41 -17
  349. package/templates/commands/ship.md +64 -25
  350. package/templates/commands/sync.md +28 -3
  351. package/core/agentic/agent-router.js +0 -140
  352. package/core/agentic/chain-of-thought.js +0 -578
  353. package/core/agentic/command-executor.js +0 -417
  354. package/core/agentic/context-filter.js +0 -354
  355. package/core/agentic/ground-truth.js +0 -591
  356. package/core/agentic/loop-detector.js +0 -406
  357. package/core/agentic/memory-system.js +0 -845
  358. package/core/agentic/parallel-tools.js +0 -366
  359. package/core/agentic/plan-mode.js +0 -572
  360. package/core/agentic/prompt-builder.js +0 -352
  361. package/core/agentic/response-templates.js +0 -290
  362. package/core/agentic/semantic-compression.js +0 -517
  363. package/core/agentic/think-blocks.js +0 -657
  364. package/core/agentic/tool-registry.js +0 -184
  365. package/core/agentic/validation-rules.js +0 -380
  366. package/core/command-registry.js +0 -698
  367. package/core/commands.js +0 -2237
  368. package/core/domain/task-stack.js +0 -497
  369. package/core/infrastructure/legacy-installer-detector.js +0 -546
  370. package/core/infrastructure/migrator.js +0 -796
  371. package/core/infrastructure/session-manager.js +0 -390
  372. package/core/utils/file-helper.js +0 -329
  373. package/packages/web/app/api/projects/[id]/delete/route.ts +0 -21
  374. package/packages/web/app/api/stats/route.ts +0 -38
  375. package/packages/web/components/AppSidebar.tsx +0 -113
  376. package/packages/web/components/stats/ActivityTimeline.tsx +0 -201
  377. package/packages/web/components/stats/AgentsCard.tsx +0 -56
  378. package/packages/web/components/stats/BentoCard.tsx +0 -88
  379. package/packages/web/components/stats/HeroSection.tsx +0 -172
  380. package/packages/web/components/stats/NowCard.tsx +0 -71
  381. package/packages/web/components/stats/QueueCard.tsx +0 -58
  382. package/packages/web/components/stats/VelocityCard.tsx +0 -60
  383. package/packages/web/components/stats/index.ts +0 -17
  384. package/packages/web/hooks/useStats.ts +0 -28
  385. /package/packages/web/components/{CommandButton.tsx → CommandButton/CommandButton.tsx} +0 -0
  386. /package/packages/web/components/{ConnectionStatus.tsx → ConnectionStatus/ConnectionStatus.tsx} +0 -0
  387. /package/packages/web/components/{Logo.tsx → Logo/Logo.tsx} +0 -0
  388. /package/packages/web/components/{MarkdownContent.tsx → MarkdownContent/MarkdownContent.tsx} +0 -0
  389. /package/packages/web/components/{ProjectAvatar.tsx → ProjectAvatar/ProjectAvatar.tsx} +0 -0
  390. /package/packages/web/components/{providers.tsx → Providers/Providers.tsx} +0 -0
  391. /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
- const chalk = require('chalk')
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
- async function animate(frames, duration = 100) {
86
- for (const frame of frames) {
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 sleep(ms) {
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
- module.exports = {
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
+