prjct-cli 0.11.5 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +134 -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 +598 -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 +36 -6
  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,159 @@
1
+ /**
2
+ * Memory System Types and Constants
3
+ *
4
+ * This module provides types for the memory system that tracks
5
+ * user preferences, decisions, and learned patterns.
6
+ */
7
+
8
+ /**
9
+ * Semantic tags for memory categorization.
10
+ * Use these constants instead of raw strings.
11
+ */
12
+ export const MEMORY_TAGS = {
13
+ // Code preferences
14
+ CODE_STYLE: 'code_style',
15
+ NAMING_CONVENTION: 'naming_convention',
16
+ FILE_STRUCTURE: 'file_structure',
17
+
18
+ // Workflow preferences
19
+ COMMIT_STYLE: 'commit_style',
20
+ BRANCH_NAMING: 'branch_naming',
21
+ TEST_BEHAVIOR: 'test_behavior',
22
+ SHIP_WORKFLOW: 'ship_workflow',
23
+
24
+ // Project context
25
+ TECH_STACK: 'tech_stack',
26
+ ARCHITECTURE: 'architecture',
27
+ DEPENDENCIES: 'dependencies',
28
+
29
+ // User preferences
30
+ OUTPUT_VERBOSITY: 'output_verbosity',
31
+ CONFIRMATION_LEVEL: 'confirmation_level',
32
+ AGENT_PREFERENCE: 'agent_preference',
33
+ } as const
34
+
35
+ export type MemoryTag = typeof MEMORY_TAGS[keyof typeof MEMORY_TAGS]
36
+
37
+ /**
38
+ * A single memory entry.
39
+ */
40
+ export interface Memory {
41
+ id: string
42
+ title: string
43
+ content: string
44
+ tags: MemoryTag[]
45
+ userTriggered: boolean
46
+ createdAt: string
47
+ updatedAt: string
48
+ }
49
+
50
+ /**
51
+ * Memory database structure.
52
+ */
53
+ export interface MemoryDatabase {
54
+ version: number
55
+ memories: Memory[]
56
+ /** Index of tag -> memory IDs */
57
+ index: Record<MemoryTag, string[]>
58
+ }
59
+
60
+ /**
61
+ * A history entry from session logs.
62
+ */
63
+ export interface HistoryEntry {
64
+ /** Timestamp */
65
+ ts: string
66
+ /** Event type */
67
+ type: HistoryEventType
68
+ /** Command that triggered this event */
69
+ command?: string
70
+ /** Task description */
71
+ task?: string
72
+ /** Feature name */
73
+ feature?: string
74
+ /** Duration if applicable */
75
+ duration?: string
76
+ /** Success status */
77
+ success?: boolean
78
+ /** Error message if failed */
79
+ error?: string
80
+ }
81
+
82
+ export type HistoryEventType =
83
+ | 'task_started'
84
+ | 'task_completed'
85
+ | 'task_paused'
86
+ | 'task_resumed'
87
+ | 'feature_added'
88
+ | 'feature_shipped'
89
+ | 'idea_captured'
90
+ | 'command_executed'
91
+ | 'error_occurred'
92
+
93
+ /**
94
+ * A tracked decision and its frequency.
95
+ */
96
+ export interface Decision {
97
+ value: string
98
+ count: number
99
+ firstSeen: string
100
+ lastSeen: string
101
+ confidence: 'low' | 'medium' | 'high'
102
+ contexts: string[]
103
+ }
104
+
105
+ /**
106
+ * A tracked workflow pattern.
107
+ */
108
+ export interface Workflow {
109
+ /** Times this workflow was executed */
110
+ count: number
111
+ firstSeen: string
112
+ lastSeen: string
113
+ /** Average duration */
114
+ avgDuration?: string
115
+ /** Success rate (0-1) */
116
+ successRate?: number
117
+ /** Steps in the workflow */
118
+ steps?: string[]
119
+ }
120
+
121
+ /**
122
+ * A user preference value.
123
+ */
124
+ export interface Preference {
125
+ value: string | number | boolean
126
+ updatedAt: string
127
+ }
128
+
129
+ /**
130
+ * Aggregated patterns learned from history.
131
+ */
132
+ export interface Patterns {
133
+ version: number
134
+ decisions: Record<string, Decision>
135
+ preferences: Record<string, Preference>
136
+ workflows: Record<string, Workflow>
137
+ counters: Record<string, number>
138
+ }
139
+
140
+ /**
141
+ * Context passed to memory system operations.
142
+ */
143
+ export interface MemoryContext {
144
+ /** Command being executed */
145
+ commandName?: string
146
+ /** Command parameters */
147
+ params?: MemoryContextParams
148
+ /** Project path */
149
+ projectPath?: string
150
+ /** Current task */
151
+ currentTask?: string
152
+ }
153
+
154
+ export interface MemoryContextParams {
155
+ task?: string
156
+ description?: string
157
+ feature?: string
158
+ idea?: string
159
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Memory System
3
+ * Re-exports from memory-system/index.ts for backwards compatibility.
4
+ */
5
+
6
+ import memorySystem from './memory-system/index'
7
+ export default memorySystem
8
+ export { MemorySystem, MEMORY_TAGS } from './memory-system/index'
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Parallel Tools
3
+ * Execute multiple tools in parallel for performance
4
+ *
5
+ * @module agentic/parallel-tools
6
+ * @version 1.0.0
7
+ */
8
+
9
+ import fs from 'fs/promises'
10
+
11
+ interface ToolCall {
12
+ tool: string
13
+ args: unknown[]
14
+ }
15
+
16
+ interface ToolResult {
17
+ tool: string
18
+ success: boolean
19
+ result?: unknown
20
+ error?: string
21
+ duration: number
22
+ }
23
+
24
+ interface ParallelMetrics {
25
+ totalCalls: number
26
+ parallelCalls: number
27
+ sequentialCalls: number
28
+ averageDuration: number
29
+ savedTime: number
30
+ }
31
+
32
+ class ParallelTools {
33
+ private metrics: ParallelMetrics
34
+
35
+ constructor() {
36
+ this.metrics = {
37
+ totalCalls: 0,
38
+ parallelCalls: 0,
39
+ sequentialCalls: 0,
40
+ averageDuration: 0,
41
+ savedTime: 0,
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Execute multiple tool calls in parallel
47
+ */
48
+ async execute(toolCalls: ToolCall[]): Promise<ToolResult[]> {
49
+ const startTime = Date.now()
50
+
51
+ const promises = toolCalls.map(async (call) => {
52
+ const callStart = Date.now()
53
+ try {
54
+ const result = await this.executeOne(call.tool, call.args)
55
+ return {
56
+ tool: call.tool,
57
+ success: true,
58
+ result,
59
+ duration: Date.now() - callStart,
60
+ }
61
+ } catch (error) {
62
+ return {
63
+ tool: call.tool,
64
+ success: false,
65
+ error: (error as Error).message,
66
+ duration: Date.now() - callStart,
67
+ }
68
+ }
69
+ })
70
+
71
+ const results = await Promise.all(promises)
72
+
73
+ // Update metrics
74
+ const totalDuration = Date.now() - startTime
75
+ const sumIndividual = results.reduce((sum, r) => sum + r.duration, 0)
76
+ this.metrics.totalCalls += toolCalls.length
77
+ this.metrics.parallelCalls += toolCalls.length
78
+ this.metrics.savedTime += sumIndividual - totalDuration
79
+ this.metrics.averageDuration =
80
+ (this.metrics.averageDuration * (this.metrics.totalCalls - toolCalls.length) + totalDuration) /
81
+ this.metrics.totalCalls
82
+
83
+ return results
84
+ }
85
+
86
+ /**
87
+ * Execute a single tool
88
+ */
89
+ private async executeOne(tool: string, args: unknown[]): Promise<unknown> {
90
+ switch (tool) {
91
+ case 'Read':
92
+ return await fs.readFile(args[0] as string, 'utf-8')
93
+
94
+ case 'Write':
95
+ await fs.writeFile(args[0] as string, args[1] as string, 'utf-8')
96
+ return true
97
+
98
+ case 'GetTimestamp':
99
+ return new Date().toISOString()
100
+
101
+ case 'GetDate':
102
+ return new Date().toISOString().split('T')[0]
103
+
104
+ default:
105
+ throw new Error(`Unknown tool: ${tool}`)
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Read multiple files in parallel
111
+ */
112
+ async readAll(paths: string[]): Promise<Map<string, string | null>> {
113
+ const results = new Map<string, string | null>()
114
+
115
+ const promises = paths.map(async (path) => {
116
+ try {
117
+ const content = await fs.readFile(path, 'utf-8')
118
+ return { path, content }
119
+ } catch {
120
+ return { path, content: null }
121
+ }
122
+ })
123
+
124
+ const readResults = await Promise.all(promises)
125
+
126
+ readResults.forEach(({ path, content }) => {
127
+ results.set(path, content)
128
+ })
129
+
130
+ return results
131
+ }
132
+
133
+ /**
134
+ * Check if tools can be parallelized
135
+ */
136
+ canParallelize(tools: string[]): boolean {
137
+ // Read operations can always be parallelized
138
+ const readOnlyTools = ['Read', 'Glob', 'Grep', 'GetTimestamp', 'GetDate']
139
+ return tools.every((tool) => readOnlyTools.includes(tool))
140
+ }
141
+
142
+ /**
143
+ * Get parallelization metrics
144
+ */
145
+ getMetrics(): ParallelMetrics {
146
+ return { ...this.metrics }
147
+ }
148
+
149
+ /**
150
+ * Reset metrics
151
+ */
152
+ resetMetrics(): void {
153
+ this.metrics = {
154
+ totalCalls: 0,
155
+ parallelCalls: 0,
156
+ sequentialCalls: 0,
157
+ averageDuration: 0,
158
+ savedTime: 0,
159
+ }
160
+ }
161
+ }
162
+
163
+ const parallelTools = new ParallelTools()
164
+ export default parallelTools
165
+ export { ParallelTools }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Plan Mode Approval Prompts
3
+ */
4
+
5
+ import type { ApprovalPrompt, ApprovalContext } from './types'
6
+
7
+ /**
8
+ * Generate approval prompt for destructive commands
9
+ */
10
+ export function generateApprovalPrompt(commandName: string, context: ApprovalContext): ApprovalPrompt {
11
+ const prompts: Record<string, ApprovalPrompt> = {
12
+ ship: {
13
+ title: 'Ship Confirmation',
14
+ message: 'Ready to commit and push changes?',
15
+ details: [
16
+ `Branch: ${context.branch || 'current'}`,
17
+ `Files: ${context.changedFiles?.length || 0} changed`,
18
+ `Commit: "${context.commitMessage || 'No message'}"`,
19
+ ],
20
+ options: [
21
+ { key: 'y', label: 'Yes, ship it', action: 'approve' },
22
+ { key: 'n', label: 'No, cancel', action: 'reject' },
23
+ { key: 'e', label: 'Edit message', action: 'edit' },
24
+ ],
25
+ },
26
+ cleanup: {
27
+ title: 'Cleanup Confirmation',
28
+ message: 'This will delete files/code. Continue?',
29
+ details: [`Files to delete: ${context.filesToDelete?.length || 0}`, `Code to remove: ${context.linesOfCode || 0} lines`],
30
+ options: [
31
+ { key: 'y', label: 'Yes, cleanup', action: 'approve' },
32
+ { key: 'n', label: 'No, cancel', action: 'reject' },
33
+ { key: 'l', label: 'List files first', action: 'list' },
34
+ ],
35
+ },
36
+ git: {
37
+ title: 'Git Operation Confirmation',
38
+ message: `Execute: ${context.operation || 'git operation'}?`,
39
+ details: context.warnings || [],
40
+ options: [
41
+ { key: 'y', label: 'Yes, execute', action: 'approve' },
42
+ { key: 'n', label: 'No, cancel', action: 'reject' },
43
+ ],
44
+ },
45
+ }
46
+
47
+ return (
48
+ prompts[commandName] || {
49
+ title: 'Confirmation Required',
50
+ message: `Execute ${commandName}?`,
51
+ options: [
52
+ { key: 'y', label: 'Yes', action: 'approve' },
53
+ { key: 'n', label: 'No', action: 'reject' },
54
+ ],
55
+ }
56
+ )
57
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Plan Mode Constants
3
+ */
4
+
5
+ /**
6
+ * Commands that require planning mode
7
+ */
8
+ export const PLAN_REQUIRED_COMMANDS = [
9
+ 'feature', // New features need planning
10
+ 'spec', // Specs are planning by definition
11
+ 'design', // Architecture needs planning
12
+ 'refactor', // Refactoring needs impact analysis
13
+ 'migrate', // Migrations are high-risk
14
+ ]
15
+
16
+ /**
17
+ * Commands that are destructive and need approval
18
+ */
19
+ export const DESTRUCTIVE_COMMANDS = [
20
+ 'ship', // Commits and pushes
21
+ 'cleanup', // Deletes files/code
22
+ 'git', // Git operations
23
+ 'migrate', // Database/schema changes
24
+ ]
25
+
26
+ /**
27
+ * Read-only tools allowed in planning mode
28
+ */
29
+ export const PLANNING_TOOLS = ['Read', 'Glob', 'Grep', 'GetTimestamp', 'GetDate', 'GetDateTime']
30
+
31
+ /**
32
+ * Plan status enum
33
+ */
34
+ export const PLAN_STATUS = {
35
+ GATHERING: 'gathering', // Collecting information
36
+ ANALYZING: 'analyzing', // Understanding context
37
+ PROPOSING: 'proposing', // Generating plan
38
+ PENDING_APPROVAL: 'pending', // Waiting for user
39
+ APPROVED: 'approved', // User approved
40
+ REJECTED: 'rejected', // User rejected
41
+ EXECUTING: 'executing', // Running the plan
42
+ COMPLETED: 'completed', // Done
43
+ ABORTED: 'aborted', // User stopped mid-execution
44
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Plan Mode System
3
+ *
4
+ * P3.4: Plan Mode + Approval Flow
5
+ * Separates planning from execution for better user confidence.
6
+ *
7
+ * Pattern from: Devin AI, Windsurf, Kiro
8
+ */
9
+
10
+ export type {
11
+ PlanParams,
12
+ GatheredInfo,
13
+ ProposedPlan,
14
+ PlanStep,
15
+ Plan,
16
+ ApprovalPrompt,
17
+ ApprovalContext,
18
+ } from './types'
19
+
20
+ export { PLAN_STATUS, PLAN_REQUIRED_COMMANDS, DESTRUCTIVE_COMMANDS, PLANNING_TOOLS } from './constants'
21
+ export { generateApprovalPrompt } from './approval'
22
+ export { PlanMode } from './plan-mode'
23
+
24
+ import { PlanMode } from './plan-mode'
25
+
26
+ // Export singleton
27
+ const planMode = new PlanMode()
28
+ export default planMode