prjct-cli 0.13.2 ā 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.
- package/CHANGELOG.md +106 -0
- package/bin/prjct +10 -13
- package/core/agentic/memory-system/semantic-memories.ts +2 -1
- package/core/agentic/plan-mode/plan-mode.ts +2 -1
- package/core/agentic/prompt-builder.ts +22 -43
- package/core/agentic/services.ts +5 -5
- package/core/agentic/smart-context.ts +7 -2
- package/core/command-registry/core-commands.ts +54 -29
- package/core/command-registry/optional-commands.ts +64 -0
- package/core/command-registry/setup-commands.ts +18 -3
- package/core/commands/analysis.ts +21 -68
- package/core/commands/analytics.ts +247 -213
- package/core/commands/base.ts +1 -1
- package/core/commands/index.ts +41 -36
- package/core/commands/maintenance.ts +300 -31
- package/core/commands/planning.ts +233 -22
- package/core/commands/setup.ts +3 -8
- package/core/commands/shipping.ts +14 -18
- package/core/commands/types.ts +8 -6
- package/core/commands/workflow.ts +105 -100
- package/core/context/generator.ts +317 -0
- package/core/context-sync.ts +7 -350
- package/core/data/index.ts +13 -32
- package/core/data/md-ideas-manager.ts +155 -0
- package/core/data/md-queue-manager.ts +4 -3
- package/core/data/md-shipped-manager.ts +90 -0
- package/core/data/md-state-manager.ts +11 -7
- package/core/domain/agent-generator.ts +23 -63
- package/core/events/index.ts +143 -0
- package/core/index.ts +17 -14
- package/core/infrastructure/capability-installer.ts +13 -149
- package/core/infrastructure/migrator/project-scanner.ts +2 -1
- package/core/infrastructure/path-manager.ts +4 -6
- package/core/infrastructure/setup.ts +3 -0
- package/core/infrastructure/uuid-migration.ts +750 -0
- package/core/outcomes/recorder.ts +2 -1
- package/core/plugin/loader.ts +4 -7
- package/core/plugin/registry.ts +3 -3
- package/core/schemas/index.ts +23 -25
- package/core/schemas/state.ts +1 -0
- package/core/serializers/ideas-serializer.ts +187 -0
- package/core/serializers/index.ts +16 -0
- package/core/serializers/shipped-serializer.ts +108 -0
- package/core/session/utils.ts +3 -9
- package/core/storage/ideas-storage.ts +273 -0
- package/core/storage/index.ts +204 -0
- package/core/storage/queue-storage.ts +297 -0
- package/core/storage/shipped-storage.ts +223 -0
- package/core/storage/state-storage.ts +235 -0
- package/core/storage/storage-manager.ts +175 -0
- package/package.json +1 -1
- package/packages/web/app/api/projects/[id]/momentum/route.ts +257 -0
- package/packages/web/app/api/sessions/current/route.ts +132 -0
- package/packages/web/app/api/sessions/history/route.ts +96 -14
- package/packages/web/app/globals.css +5 -0
- package/packages/web/app/layout.tsx +2 -0
- package/packages/web/app/project/[id]/code/layout.tsx +18 -0
- package/packages/web/app/project/[id]/code/page.tsx +408 -0
- package/packages/web/app/project/[id]/page.tsx +359 -389
- package/packages/web/app/project/[id]/reports/page.tsx +59 -0
- package/packages/web/app/project/[id]/reports/print/page.tsx +58 -0
- package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +0 -1
- package/packages/web/components/AgentsCard/AgentsCard.tsx +64 -34
- package/packages/web/components/AgentsCard/AgentsCard.types.ts +1 -0
- package/packages/web/components/AppSidebar/AppSidebar.tsx +135 -11
- package/packages/web/components/BentoCard/BentoCard.constants.ts +3 -3
- package/packages/web/components/BentoCard/BentoCard.tsx +2 -1
- package/packages/web/components/BentoGrid/BentoGrid.tsx +2 -2
- package/packages/web/components/BlockersCard/BlockersCard.tsx +65 -57
- package/packages/web/components/BlockersCard/BlockersCard.types.ts +1 -0
- package/packages/web/components/CommandBar/CommandBar.tsx +67 -0
- package/packages/web/components/CommandBar/index.ts +1 -0
- package/packages/web/components/DashboardContent/DashboardContent.tsx +35 -5
- package/packages/web/components/DateGroup/DateGroup.tsx +1 -1
- package/packages/web/components/EmptyState/EmptyState.tsx +39 -21
- package/packages/web/components/EmptyState/EmptyState.types.ts +1 -0
- package/packages/web/components/EventRow/EventRow.tsx +4 -4
- package/packages/web/components/EventRow/EventRow.utils.ts +3 -3
- package/packages/web/components/HeroSection/HeroSection.tsx +52 -15
- package/packages/web/components/HeroSection/HeroSection.types.ts +4 -4
- package/packages/web/components/HeroSection/HeroSection.utils.ts +7 -3
- package/packages/web/components/IdeasCard/IdeasCard.tsx +94 -27
- package/packages/web/components/IdeasCard/IdeasCard.types.ts +1 -0
- package/packages/web/components/MasonryGrid/MasonryGrid.tsx +18 -0
- package/packages/web/components/MasonryGrid/index.ts +1 -0
- package/packages/web/components/MomentumWidget/MomentumWidget.tsx +119 -0
- package/packages/web/components/MomentumWidget/MomentumWidget.types.ts +16 -0
- package/packages/web/components/MomentumWidget/index.ts +2 -0
- package/packages/web/components/NowCard/NowCard.tsx +81 -56
- package/packages/web/components/NowCard/NowCard.types.ts +1 -0
- package/packages/web/components/PageHeader/PageHeader.tsx +24 -0
- package/packages/web/components/PageHeader/index.ts +1 -0
- package/packages/web/components/ProgressRing/ProgressRing.constants.ts +2 -2
- package/packages/web/components/ProjectAvatar/ProjectAvatar.tsx +2 -2
- package/packages/web/components/ProjectColorDot/ProjectColorDot.tsx +37 -0
- package/packages/web/components/ProjectColorDot/index.ts +1 -0
- package/packages/web/components/ProjectSelectorModal/ProjectSelectorModal.tsx +104 -0
- package/packages/web/components/ProjectSelectorModal/index.ts +1 -0
- package/packages/web/components/Providers/Providers.tsx +4 -1
- package/packages/web/components/QueueCard/QueueCard.tsx +78 -25
- package/packages/web/components/QueueCard/QueueCard.types.ts +1 -0
- package/packages/web/components/QueueCard/QueueCard.utils.ts +3 -3
- package/packages/web/components/RecoverCard/RecoverCard.tsx +72 -0
- package/packages/web/components/RecoverCard/RecoverCard.types.ts +16 -0
- package/packages/web/components/RecoverCard/index.ts +2 -0
- package/packages/web/components/RoadmapCard/RoadmapCard.tsx +101 -33
- package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +1 -0
- package/packages/web/components/ShipsCard/ShipsCard.tsx +71 -28
- package/packages/web/components/ShipsCard/ShipsCard.types.ts +2 -0
- package/packages/web/components/SparklineChart/SparklineChart.tsx +20 -18
- package/packages/web/components/StatsMasonry/StatsMasonry.tsx +95 -0
- package/packages/web/components/StatsMasonry/index.ts +1 -0
- package/packages/web/components/StreakCard/StreakCard.tsx +37 -35
- package/packages/web/components/TasksCounter/TasksCounter.tsx +1 -1
- package/packages/web/components/TechStackBadges/TechStackBadges.tsx +12 -4
- package/packages/web/components/TerminalDock/DockToggleTab.tsx +29 -0
- package/packages/web/components/TerminalDock/TerminalDock.tsx +386 -0
- package/packages/web/components/TerminalDock/TerminalDockTab.tsx +130 -0
- package/packages/web/components/TerminalDock/TerminalTabBar.tsx +142 -0
- package/packages/web/components/TerminalDock/index.ts +2 -0
- package/packages/web/components/VelocityBadge/VelocityBadge.tsx +8 -3
- package/packages/web/components/VelocityCard/VelocityCard.tsx +49 -47
- package/packages/web/components/WeeklyReports/PrintableReport.tsx +259 -0
- package/packages/web/components/WeeklyReports/ReportPreviewCard.tsx +187 -0
- package/packages/web/components/WeeklyReports/WeekCalendar.tsx +288 -0
- package/packages/web/components/WeeklyReports/WeeklyReports.tsx +149 -0
- package/packages/web/components/WeeklyReports/index.ts +4 -0
- package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +16 -4
- package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +1 -0
- package/packages/web/components/charts/SessionsChart.tsx +6 -3
- package/packages/web/components/ui/dialog.tsx +143 -0
- package/packages/web/components/ui/drawer.tsx +135 -0
- package/packages/web/components/ui/select.tsx +187 -0
- package/packages/web/context/GlobalTerminalContext.tsx +538 -0
- package/packages/web/lib/commands.ts +81 -0
- package/packages/web/lib/generate-week-report.ts +285 -0
- package/packages/web/lib/parse-prjct-files.ts +56 -55
- package/packages/web/lib/project-colors.ts +58 -0
- package/packages/web/lib/projects.ts +58 -5
- package/packages/web/lib/services/projects.server.ts +11 -1
- package/packages/web/next-env.d.ts +1 -1
- package/packages/web/package.json +5 -1
- package/templates/commands/analyze.md +39 -3
- package/templates/commands/ask.md +58 -3
- package/templates/commands/bug.md +117 -26
- package/templates/commands/dash.md +95 -158
- package/templates/commands/done.md +130 -148
- package/templates/commands/feature.md +125 -103
- package/templates/commands/git.md +18 -3
- package/templates/commands/idea.md +121 -38
- package/templates/commands/init.md +124 -20
- package/templates/commands/migrate-all.md +63 -28
- package/templates/commands/migrate.md +140 -0
- package/templates/commands/next.md +115 -5
- package/templates/commands/now.md +146 -82
- package/templates/commands/pause.md +89 -74
- package/templates/commands/redo.md +6 -4
- package/templates/commands/resume.md +141 -59
- package/templates/commands/ship.md +103 -231
- package/templates/commands/spec.md +98 -8
- package/templates/commands/suggest.md +22 -2
- package/templates/commands/sync.md +192 -203
- package/templates/commands/undo.md +6 -4
- package/core/data/agents-manager.ts +0 -76
- package/core/data/analysis-manager.ts +0 -83
- package/core/data/base-manager.ts +0 -156
- package/core/data/ideas-manager.ts +0 -81
- package/core/data/outcomes-manager.ts +0 -96
- package/core/data/project-manager.ts +0 -75
- package/core/data/roadmap-manager.ts +0 -118
- package/core/data/shipped-manager.ts +0 -65
- package/core/data/state-manager.ts +0 -214
- package/core/state/index.ts +0 -25
- package/core/state/manager.ts +0 -376
- package/core/state/types.ts +0 -185
- package/core/utils/project-capabilities.ts +0 -156
- package/core/view-generator.ts +0 -536
- package/packages/web/app/project/[id]/stats/loading.tsx +0 -43
- package/packages/web/app/project/[id]/stats/page.tsx +0 -253
- package/templates/agent-assignment.md +0 -72
- package/templates/analysis/project-analysis.md +0 -78
- package/templates/checklists/accessibility.md +0 -33
- package/templates/commands/build.md +0 -17
- package/templates/commands/decision.md +0 -226
- package/templates/commands/fix.md +0 -79
- package/templates/commands/help.md +0 -61
- package/templates/commands/progress.md +0 -14
- package/templates/commands/recap.md +0 -14
- package/templates/commands/roadmap.md +0 -52
- package/templates/commands/status.md +0 -17
- package/templates/commands/task.md +0 -63
- package/templates/commands/work.md +0 -44
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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š
|
|
252
|
-
console.log('š”
|
|
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('ā¢
|
|
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
|
}
|