prjct-cli 0.13.3 → 0.15.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 (193) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/bin/prjct +10 -13
  3. package/core/agentic/memory-system/semantic-memories.ts +2 -1
  4. package/core/agentic/plan-mode/plan-mode.ts +2 -1
  5. package/core/agentic/prompt-builder.ts +22 -43
  6. package/core/agentic/services.ts +5 -5
  7. package/core/agentic/smart-context.ts +7 -2
  8. package/core/command-registry/core-commands.ts +54 -29
  9. package/core/command-registry/optional-commands.ts +64 -0
  10. package/core/command-registry/setup-commands.ts +18 -3
  11. package/core/commands/analysis.ts +21 -68
  12. package/core/commands/analytics.ts +247 -213
  13. package/core/commands/base.ts +1 -1
  14. package/core/commands/index.ts +41 -36
  15. package/core/commands/maintenance.ts +300 -31
  16. package/core/commands/planning.ts +233 -22
  17. package/core/commands/setup.ts +3 -8
  18. package/core/commands/shipping.ts +14 -18
  19. package/core/commands/types.ts +8 -6
  20. package/core/commands/workflow.ts +105 -100
  21. package/core/context/generator.ts +317 -0
  22. package/core/context-sync.ts +7 -350
  23. package/core/data/index.ts +13 -32
  24. package/core/data/md-ideas-manager.ts +155 -0
  25. package/core/data/md-queue-manager.ts +4 -3
  26. package/core/data/md-shipped-manager.ts +90 -0
  27. package/core/data/md-state-manager.ts +11 -7
  28. package/core/domain/agent-generator.ts +23 -63
  29. package/core/events/index.ts +143 -0
  30. package/core/index.ts +17 -14
  31. package/core/infrastructure/capability-installer.ts +13 -149
  32. package/core/infrastructure/migrator/project-scanner.ts +2 -1
  33. package/core/infrastructure/path-manager.ts +4 -6
  34. package/core/infrastructure/setup.ts +3 -0
  35. package/core/infrastructure/uuid-migration.ts +750 -0
  36. package/core/outcomes/recorder.ts +2 -1
  37. package/core/plugin/loader.ts +4 -7
  38. package/core/plugin/registry.ts +3 -3
  39. package/core/schemas/index.ts +23 -25
  40. package/core/schemas/state.ts +1 -0
  41. package/core/serializers/ideas-serializer.ts +187 -0
  42. package/core/serializers/index.ts +16 -0
  43. package/core/serializers/shipped-serializer.ts +108 -0
  44. package/core/session/utils.ts +3 -9
  45. package/core/storage/ideas-storage.ts +273 -0
  46. package/core/storage/index.ts +204 -0
  47. package/core/storage/queue-storage.ts +297 -0
  48. package/core/storage/shipped-storage.ts +223 -0
  49. package/core/storage/state-storage.ts +235 -0
  50. package/core/storage/storage-manager.ts +175 -0
  51. package/package.json +1 -1
  52. package/packages/web/app/api/projects/[id]/momentum/route.ts +257 -0
  53. package/packages/web/app/api/sessions/current/route.ts +132 -0
  54. package/packages/web/app/api/sessions/history/route.ts +96 -14
  55. package/packages/web/app/globals.css +5 -0
  56. package/packages/web/app/layout.tsx +2 -0
  57. package/packages/web/app/project/[id]/code/layout.tsx +18 -0
  58. package/packages/web/app/project/[id]/code/page.tsx +408 -0
  59. package/packages/web/app/project/[id]/page.tsx +359 -389
  60. package/packages/web/app/project/[id]/reports/page.tsx +59 -0
  61. package/packages/web/app/project/[id]/reports/print/page.tsx +58 -0
  62. package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +0 -1
  63. package/packages/web/components/AgentsCard/AgentsCard.tsx +64 -34
  64. package/packages/web/components/AgentsCard/AgentsCard.types.ts +1 -0
  65. package/packages/web/components/AppSidebar/AppSidebar.tsx +135 -11
  66. package/packages/web/components/BentoCard/BentoCard.constants.ts +3 -3
  67. package/packages/web/components/BentoCard/BentoCard.tsx +2 -1
  68. package/packages/web/components/BentoGrid/BentoGrid.tsx +2 -2
  69. package/packages/web/components/BlockersCard/BlockersCard.tsx +65 -57
  70. package/packages/web/components/BlockersCard/BlockersCard.types.ts +1 -0
  71. package/packages/web/components/CommandBar/CommandBar.tsx +67 -0
  72. package/packages/web/components/CommandBar/index.ts +1 -0
  73. package/packages/web/components/DashboardContent/DashboardContent.tsx +35 -5
  74. package/packages/web/components/DateGroup/DateGroup.tsx +1 -1
  75. package/packages/web/components/EmptyState/EmptyState.tsx +39 -21
  76. package/packages/web/components/EmptyState/EmptyState.types.ts +1 -0
  77. package/packages/web/components/EventRow/EventRow.tsx +4 -4
  78. package/packages/web/components/EventRow/EventRow.utils.ts +3 -3
  79. package/packages/web/components/HeroSection/HeroSection.tsx +52 -15
  80. package/packages/web/components/HeroSection/HeroSection.types.ts +4 -4
  81. package/packages/web/components/HeroSection/HeroSection.utils.ts +7 -3
  82. package/packages/web/components/IdeasCard/IdeasCard.tsx +94 -27
  83. package/packages/web/components/IdeasCard/IdeasCard.types.ts +1 -0
  84. package/packages/web/components/MasonryGrid/MasonryGrid.tsx +18 -0
  85. package/packages/web/components/MasonryGrid/index.ts +1 -0
  86. package/packages/web/components/MomentumWidget/MomentumWidget.tsx +119 -0
  87. package/packages/web/components/MomentumWidget/MomentumWidget.types.ts +16 -0
  88. package/packages/web/components/MomentumWidget/index.ts +2 -0
  89. package/packages/web/components/NowCard/NowCard.tsx +81 -56
  90. package/packages/web/components/NowCard/NowCard.types.ts +1 -0
  91. package/packages/web/components/PageHeader/PageHeader.tsx +24 -0
  92. package/packages/web/components/PageHeader/index.ts +1 -0
  93. package/packages/web/components/ProgressRing/ProgressRing.constants.ts +2 -2
  94. package/packages/web/components/ProjectAvatar/ProjectAvatar.tsx +2 -2
  95. package/packages/web/components/ProjectColorDot/ProjectColorDot.tsx +37 -0
  96. package/packages/web/components/ProjectColorDot/index.ts +1 -0
  97. package/packages/web/components/ProjectSelectorModal/ProjectSelectorModal.tsx +104 -0
  98. package/packages/web/components/ProjectSelectorModal/index.ts +1 -0
  99. package/packages/web/components/Providers/Providers.tsx +4 -1
  100. package/packages/web/components/QueueCard/QueueCard.tsx +78 -25
  101. package/packages/web/components/QueueCard/QueueCard.types.ts +1 -0
  102. package/packages/web/components/QueueCard/QueueCard.utils.ts +3 -3
  103. package/packages/web/components/RecoverCard/RecoverCard.tsx +72 -0
  104. package/packages/web/components/RecoverCard/RecoverCard.types.ts +16 -0
  105. package/packages/web/components/RecoverCard/index.ts +2 -0
  106. package/packages/web/components/RoadmapCard/RoadmapCard.tsx +101 -33
  107. package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +1 -0
  108. package/packages/web/components/ShipsCard/ShipsCard.tsx +71 -28
  109. package/packages/web/components/ShipsCard/ShipsCard.types.ts +2 -0
  110. package/packages/web/components/SparklineChart/SparklineChart.tsx +20 -18
  111. package/packages/web/components/StatsMasonry/StatsMasonry.tsx +95 -0
  112. package/packages/web/components/StatsMasonry/index.ts +1 -0
  113. package/packages/web/components/StreakCard/StreakCard.tsx +37 -35
  114. package/packages/web/components/TasksCounter/TasksCounter.tsx +1 -1
  115. package/packages/web/components/TechStackBadges/TechStackBadges.tsx +12 -4
  116. package/packages/web/components/TerminalDock/DockToggleTab.tsx +29 -0
  117. package/packages/web/components/TerminalDock/TerminalDock.tsx +386 -0
  118. package/packages/web/components/TerminalDock/TerminalDockTab.tsx +130 -0
  119. package/packages/web/components/TerminalDock/TerminalTabBar.tsx +142 -0
  120. package/packages/web/components/TerminalDock/index.ts +2 -0
  121. package/packages/web/components/VelocityBadge/VelocityBadge.tsx +8 -3
  122. package/packages/web/components/VelocityCard/VelocityCard.tsx +49 -47
  123. package/packages/web/components/WeeklyReports/PrintableReport.tsx +259 -0
  124. package/packages/web/components/WeeklyReports/ReportPreviewCard.tsx +187 -0
  125. package/packages/web/components/WeeklyReports/WeekCalendar.tsx +288 -0
  126. package/packages/web/components/WeeklyReports/WeeklyReports.tsx +149 -0
  127. package/packages/web/components/WeeklyReports/index.ts +4 -0
  128. package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +16 -4
  129. package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +1 -0
  130. package/packages/web/components/charts/SessionsChart.tsx +6 -3
  131. package/packages/web/components/ui/dialog.tsx +143 -0
  132. package/packages/web/components/ui/drawer.tsx +135 -0
  133. package/packages/web/components/ui/select.tsx +187 -0
  134. package/packages/web/context/GlobalTerminalContext.tsx +538 -0
  135. package/packages/web/lib/commands.ts +81 -0
  136. package/packages/web/lib/generate-week-report.ts +285 -0
  137. package/packages/web/lib/parse-prjct-files.ts +56 -55
  138. package/packages/web/lib/project-colors.ts +58 -0
  139. package/packages/web/lib/projects.ts +58 -5
  140. package/packages/web/lib/services/projects.server.ts +11 -1
  141. package/packages/web/next-env.d.ts +1 -1
  142. package/packages/web/package.json +5 -1
  143. package/templates/commands/analyze.md +39 -3
  144. package/templates/commands/ask.md +58 -3
  145. package/templates/commands/bug.md +117 -26
  146. package/templates/commands/dash.md +95 -158
  147. package/templates/commands/done.md +130 -148
  148. package/templates/commands/feature.md +125 -103
  149. package/templates/commands/git.md +18 -3
  150. package/templates/commands/idea.md +121 -38
  151. package/templates/commands/init.md +124 -20
  152. package/templates/commands/migrate-all.md +63 -28
  153. package/templates/commands/migrate.md +140 -0
  154. package/templates/commands/next.md +115 -5
  155. package/templates/commands/now.md +146 -82
  156. package/templates/commands/pause.md +89 -74
  157. package/templates/commands/redo.md +6 -4
  158. package/templates/commands/resume.md +141 -59
  159. package/templates/commands/ship.md +103 -231
  160. package/templates/commands/spec.md +98 -8
  161. package/templates/commands/suggest.md +22 -2
  162. package/templates/commands/sync.md +192 -203
  163. package/templates/commands/undo.md +6 -4
  164. package/core/data/agents-manager.ts +0 -76
  165. package/core/data/analysis-manager.ts +0 -83
  166. package/core/data/base-manager.ts +0 -156
  167. package/core/data/ideas-manager.ts +0 -81
  168. package/core/data/outcomes-manager.ts +0 -96
  169. package/core/data/project-manager.ts +0 -75
  170. package/core/data/roadmap-manager.ts +0 -118
  171. package/core/data/shipped-manager.ts +0 -65
  172. package/core/data/state-manager.ts +0 -214
  173. package/core/state/index.ts +0 -25
  174. package/core/state/manager.ts +0 -376
  175. package/core/state/types.ts +0 -185
  176. package/core/utils/project-capabilities.ts +0 -156
  177. package/core/view-generator.ts +0 -536
  178. package/packages/web/app/project/[id]/stats/loading.tsx +0 -43
  179. package/packages/web/app/project/[id]/stats/page.tsx +0 -253
  180. package/templates/agent-assignment.md +0 -72
  181. package/templates/analysis/project-analysis.md +0 -78
  182. package/templates/checklists/accessibility.md +0 -33
  183. package/templates/commands/build.md +0 -17
  184. package/templates/commands/decision.md +0 -226
  185. package/templates/commands/fix.md +0 -79
  186. package/templates/commands/help.md +0 -61
  187. package/templates/commands/progress.md +0 -14
  188. package/templates/commands/recap.md +0 -14
  189. package/templates/commands/roadmap.md +0 -52
  190. package/templates/commands/status.md +0 -17
  191. package/templates/commands/task.md +0 -63
  192. package/templates/commands/work.md +0 -44
  193. package/templates/commands/workflow.md +0 -12
@@ -13,6 +13,9 @@ import {
13
13
  configManager,
14
14
  dateHelper
15
15
  } from './base'
16
+ import analyzer from '../domain/analyzer'
17
+ import contextSync from '../context-sync'
18
+ import commandInstaller from '../infrastructure/command-installer'
16
19
 
17
20
  export class AnalysisCommands extends PrjctCommandsBase {
18
21
  /**
@@ -24,7 +27,6 @@ export class AnalysisCommands extends PrjctCommandsBase {
24
27
 
25
28
  console.log('šŸ” Analyzing repository...\n')
26
29
 
27
- const analyzer = require('../domain/analyzer')
28
30
  analyzer.init(projectPath)
29
31
 
30
32
  const context = await contextBuilder.build(projectPath, options) as Context
@@ -69,10 +71,8 @@ export class AnalysisCommands extends PrjctCommandsBase {
69
71
  gitCommits: analysisData.gitStats.totalCommits,
70
72
  })
71
73
 
72
- const contextSync = require('../context-sync')
73
74
  await contextSync.generateLocalContext(projectPath, projectId)
74
75
 
75
- const commandInstaller = require('../infrastructure/command-installer')
76
76
  const globalConfigResult = await commandInstaller.installGlobalConfig()
77
77
  if (globalConfigResult.success) {
78
78
  console.log('šŸ“ Updated ~/.claude/CLAUDE.md')
@@ -189,7 +189,11 @@ export class AnalysisCommands extends PrjctCommandsBase {
189
189
  }
190
190
 
191
191
  /**
192
- * /p:sync - Sync project state and generate dynamic agents
192
+ * /p:sync - Sync project state with raw data for Claude to analyze
193
+ *
194
+ * AGENTIC: This command gathers RAW data and puts it in CLAUDE.md
195
+ * Claude then reads the data and decides what agents to create.
196
+ * NO hardcoded if/else logic for technology detection.
193
197
  */
194
198
  async sync(projectPath: string = process.cwd()): Promise<CommandResult> {
195
199
  try {
@@ -200,8 +204,7 @@ export class AnalysisCommands extends PrjctCommandsBase {
200
204
 
201
205
  console.log('šŸ”„ Syncing project state...\n')
202
206
 
203
- const context = await contextBuilder.build(projectPath) as Context
204
-
207
+ // 1. Run analysis to gather raw data
205
208
  console.log('šŸ“Š Running analysis...')
206
209
  const analysisResult = await this.analyze({}, projectPath)
207
210
 
@@ -210,53 +213,34 @@ export class AnalysisCommands extends PrjctCommandsBase {
210
213
  return analysisResult
211
214
  }
212
215
 
213
- const summaryContent = (await toolRegistry.get('Read')!(context.paths.analysis)) as string | null
214
-
215
- if (!summaryContent) {
216
- console.error('āŒ No analysis found. Run /p:analyze first.')
217
- return { success: false, error: 'No analysis found' }
218
- }
219
-
220
- console.log('āœ… Analysis loaded\n')
221
-
222
- console.log('šŸ¤– Generating specialized agents...\n')
223
-
224
216
  const projectId = await configManager.getProjectId(projectPath)
225
- const AgentGenerator = require('../domain/agent-generator')
226
- const generator = new AgentGenerator(projectId)
227
217
 
228
- const generatedAgents = await this._generateAgentsFromAnalysis(summaryContent, generator, projectPath)
229
-
230
- await this.logToMemory(projectPath, 'agents_generated', {
231
- timestamp: dateHelper.getTimestamp(),
232
- agents: generatedAgents,
233
- count: generatedAgents.length,
234
- })
235
-
236
- const contextSync = require('../context-sync')
218
+ // 2. Generate CLAUDE.md with RAW DATA (no processing)
219
+ // Claude will read this and decide what to do
237
220
  await contextSync.generateLocalContext(projectPath, projectId)
238
221
 
239
- const commandInstaller = require('../infrastructure/command-installer')
222
+ // 3. Update global config
240
223
  const globalConfigResult = await commandInstaller.installGlobalConfig()
241
224
  if (globalConfigResult.success) {
242
225
  console.log('šŸ“ Updated ~/.claude/CLAUDE.md')
243
226
  }
244
227
 
245
- console.log('\nāœ… Sync complete!\n')
246
- console.log(`šŸ¤– Agents Generated: ${generatedAgents.length}`)
247
- generatedAgents.forEach((agent) => {
248
- console.log(` • ${agent}`)
228
+ // 4. Log to memory
229
+ await this.logToMemory(projectPath, 'sync_complete', {
230
+ timestamp: dateHelper.getTimestamp(),
231
+ projectId,
249
232
  })
233
+
234
+ console.log('\nāœ… Sync complete!\n')
250
235
  console.log('šŸ“ Context: ~/.prjct-cli/projects/' + projectId + '/CLAUDE.md')
251
- console.log('\nšŸ“‹ Based on: analysis/repo-summary.md')
252
- console.log('šŸ’” See templates/agents/AGENTS.md for reference\n')
236
+ console.log('\nšŸ“‹ CLAUDE.md contains RAW project data.')
237
+ console.log('šŸ’” Claude reads this data and decides what specialists to create.\n')
253
238
  console.log('Next steps:')
254
- console.log('• /p:context → View project state')
239
+ console.log('• Read CLAUDE.md to see project data')
255
240
  console.log('• /p:feature → Add a feature')
256
241
 
257
242
  return {
258
243
  success: true,
259
- agents: generatedAgents,
260
244
  }
261
245
  } catch (error) {
262
246
  console.error('āŒ Error:', (error as Error).message)
@@ -264,35 +248,4 @@ export class AnalysisCommands extends PrjctCommandsBase {
264
248
  }
265
249
  }
266
250
 
267
- /**
268
- * Generate agents dynamically from analysis summary
269
- */
270
- async _generateAgentsFromAnalysis(summaryContent: string, generator: unknown, projectPath: string): Promise<string[]> {
271
- const agents: string[] = []
272
-
273
- const analyzer = require('../domain/analyzer')
274
- analyzer.init(projectPath)
275
-
276
- const projectData = {
277
- packageJson: await analyzer.readPackageJson(),
278
- extensions: await analyzer.getFileExtensions(),
279
- directories: await analyzer.listDirectories(),
280
- configFiles: await analyzer.listConfigFiles(),
281
- analysisSummary: summaryContent,
282
- projectPath
283
- }
284
-
285
- const gen = generator as { generateAgentsFromTech: (data: unknown) => Promise<Array<{ name?: string } | string>> }
286
- const generatedAgents = await gen.generateAgentsFromTech(projectData)
287
-
288
- generatedAgents.forEach(agent => {
289
- if (typeof agent === 'string') {
290
- agents.push(agent)
291
- } else if (agent.name) {
292
- agents.push(agent.name)
293
- }
294
- })
295
-
296
- return agents
297
- }
298
251
  }