prjct-cli 1.22.0 → 1.24.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 +230 -0
- package/bin/prjct +30 -13
- package/dist/bin/prjct-core.mjs +1748 -0
- package/dist/bin/prjct.mjs +17 -36672
- package/dist/cli/linear.mjs +14 -0
- package/dist/daemon/entry.mjs +1429 -0
- package/dist/templates.json +1 -0
- package/package.json +4 -5
- package/bin/prjct.ts +0 -342
- package/core/__tests__/agentic/analysis-injection.test.ts +0 -377
- package/core/__tests__/agentic/cache-eviction.test.ts +0 -294
- package/core/__tests__/agentic/command-context.test.ts +0 -281
- package/core/__tests__/agentic/command-executor.test.ts +0 -659
- package/core/__tests__/agentic/domain-classifier.test.ts +0 -330
- package/core/__tests__/agentic/injection-validator.test.ts +0 -255
- package/core/__tests__/agentic/memory-system.test.ts +0 -281
- package/core/__tests__/agentic/plan-mode.test.ts +0 -386
- package/core/__tests__/agentic/prompt-assembly.test.ts +0 -298
- package/core/__tests__/agentic/prompt-builder.test.ts +0 -243
- package/core/__tests__/agentic/response-validator.test.ts +0 -263
- package/core/__tests__/agentic/semantic-matching.test.ts +0 -131
- package/core/__tests__/agentic/smart-context.test.ts +0 -372
- package/core/__tests__/agentic/tech-normalizer.test.ts +0 -136
- package/core/__tests__/agentic/token-budget.test.ts +0 -294
- package/core/__tests__/ai-tools/formatters.test.ts +0 -476
- package/core/__tests__/domain/bm25.test.ts +0 -225
- package/core/__tests__/domain/change-propagator.test.ts +0 -100
- package/core/__tests__/domain/fibonacci.test.ts +0 -113
- package/core/__tests__/domain/file-hasher.test.ts +0 -146
- package/core/__tests__/domain/file-ranker.test.ts +0 -169
- package/core/__tests__/domain/git-cochange.test.ts +0 -121
- package/core/__tests__/domain/import-graph.test.ts +0 -156
- package/core/__tests__/domain/velocity.test.ts +0 -623
- package/core/__tests__/infrastructure/performance-tracker.test.ts +0 -328
- package/core/__tests__/schemas/model.test.ts +0 -272
- package/core/__tests__/services/dependency-validator.test.ts +0 -175
- package/core/__tests__/services/hierarchical-agent-resolver.test.ts +0 -359
- package/core/__tests__/services/nested-context-resolver.test.ts +0 -443
- package/core/__tests__/services/project-index.test.ts +0 -355
- package/core/__tests__/services/staleness-checker.test.ts +0 -204
- package/core/__tests__/storage/analysis-storage.test.ts +0 -641
- package/core/__tests__/storage/archive-storage.test.ts +0 -455
- package/core/__tests__/storage/safe-reader.test.ts +0 -262
- package/core/__tests__/storage/sqlite-migration.test.ts +0 -1016
- package/core/__tests__/storage/state-storage-feedback.test.ts +0 -463
- package/core/__tests__/storage/state-storage-history.test.ts +0 -469
- package/core/__tests__/storage/storage-manager.test.ts +0 -383
- package/core/__tests__/storage/subtask-handoff.test.ts +0 -237
- package/core/__tests__/types/fs.test.ts +0 -125
- package/core/__tests__/utils/date-helper.test.ts +0 -449
- package/core/__tests__/utils/output.test.ts +0 -278
- package/core/__tests__/utils/preserve-sections.test.ts +0 -216
- package/core/__tests__/utils/project-commands.test.ts +0 -71
- package/core/__tests__/utils/retry.test.ts +0 -381
- package/core/__tests__/workflow/state-machine.test.ts +0 -216
- package/core/agentic/agent-router.ts +0 -150
- package/core/agentic/anti-hallucination.ts +0 -141
- package/core/agentic/chain-of-thought.ts +0 -234
- package/core/agentic/command-classifier.ts +0 -141
- package/core/agentic/command-context.ts +0 -168
- package/core/agentic/command-executor.ts +0 -471
- package/core/agentic/context-builder.ts +0 -285
- package/core/agentic/domain-classifier.ts +0 -525
- package/core/agentic/environment-block.ts +0 -102
- package/core/agentic/ground-truth.ts +0 -706
- package/core/agentic/index.ts +0 -193
- package/core/agentic/injection-validator.ts +0 -208
- package/core/agentic/loop-detector.ts +0 -451
- package/core/agentic/memory-system.ts +0 -1547
- package/core/agentic/orchestrator-executor.ts +0 -579
- package/core/agentic/plan-mode.ts +0 -525
- package/core/agentic/prompt-builder.ts +0 -1069
- package/core/agentic/response-validator.ts +0 -98
- package/core/agentic/services.ts +0 -167
- package/core/agentic/skill-loader.ts +0 -106
- package/core/agentic/smart-context.ts +0 -393
- package/core/agentic/tech-normalizer.ts +0 -167
- package/core/agentic/template-executor.ts +0 -272
- package/core/agentic/template-loader.ts +0 -109
- package/core/agentic/token-budget.ts +0 -226
- package/core/agentic/tool-registry.ts +0 -146
- package/core/agents/index.ts +0 -28
- package/core/agents/performance.ts +0 -429
- package/core/ai-tools/formatters.ts +0 -341
- package/core/ai-tools/generator.ts +0 -144
- package/core/ai-tools/index.ts +0 -15
- package/core/ai-tools/registry.ts +0 -201
- package/core/bus/bus.ts +0 -314
- package/core/bus/index.ts +0 -8
- package/core/cli/linear.ts +0 -500
- package/core/cli/lint-meta-commentary.ts +0 -177
- package/core/cli/start.ts +0 -386
- package/core/commands/analysis.ts +0 -1274
- package/core/commands/analytics.ts +0 -342
- package/core/commands/base.ts +0 -118
- package/core/commands/cleanup.ts +0 -157
- package/core/commands/command-data.ts +0 -463
- package/core/commands/commands.ts +0 -306
- package/core/commands/context.ts +0 -238
- package/core/commands/design.ts +0 -77
- package/core/commands/index.ts +0 -19
- package/core/commands/maintenance.ts +0 -77
- package/core/commands/performance.ts +0 -114
- package/core/commands/planning.ts +0 -662
- package/core/commands/register.ts +0 -127
- package/core/commands/registry.ts +0 -444
- package/core/commands/setup.ts +0 -280
- package/core/commands/shipping.ts +0 -267
- package/core/commands/snapshots.ts +0 -297
- package/core/commands/uninstall.ts +0 -542
- package/core/commands/velocity.ts +0 -149
- package/core/commands/workflow.ts +0 -505
- package/core/config/command-context.config.json +0 -66
- package/core/constants/index.ts +0 -379
- package/core/context/generator.ts +0 -368
- package/core/context-tools/files-tool.ts +0 -577
- package/core/context-tools/imports-tool.ts +0 -400
- package/core/context-tools/index.ts +0 -434
- package/core/context-tools/recent-tool.ts +0 -301
- package/core/context-tools/signatures-tool.ts +0 -495
- package/core/context-tools/summary-tool.ts +0 -301
- package/core/context-tools/token-counter.ts +0 -273
- package/core/context-tools/types.ts +0 -253
- package/core/domain/agent-generator.ts +0 -186
- package/core/domain/agent-loader.ts +0 -419
- package/core/domain/analyzer.ts +0 -387
- package/core/domain/architecture-generator.ts +0 -108
- package/core/domain/bm25.ts +0 -525
- package/core/domain/change-propagator.ts +0 -162
- package/core/domain/context-estimator.ts +0 -175
- package/core/domain/fibonacci.ts +0 -128
- package/core/domain/file-hasher.ts +0 -296
- package/core/domain/file-ranker.ts +0 -151
- package/core/domain/git-cochange.ts +0 -250
- package/core/domain/import-graph.ts +0 -315
- package/core/domain/snapshot-manager.ts +0 -415
- package/core/domain/task-stack.ts +0 -578
- package/core/domain/velocity.ts +0 -470
- package/core/errors.ts +0 -335
- package/core/events/events.ts +0 -85
- package/core/events/index.ts +0 -8
- package/core/index.ts +0 -481
- package/core/infrastructure/agent-detector.ts +0 -135
- package/core/infrastructure/ai-provider.ts +0 -578
- package/core/infrastructure/author-detector.ts +0 -133
- package/core/infrastructure/capability-installer.ts +0 -76
- package/core/infrastructure/claude-agent.ts +0 -297
- package/core/infrastructure/command-installer.ts +0 -752
- package/core/infrastructure/config-manager.ts +0 -364
- package/core/infrastructure/editors-config.ts +0 -172
- package/core/infrastructure/path-manager.ts +0 -571
- package/core/infrastructure/performance-tracker.ts +0 -326
- package/core/infrastructure/permission-manager.ts +0 -289
- package/core/infrastructure/setup.ts +0 -1061
- package/core/infrastructure/update-checker.ts +0 -246
- package/core/integrations/issue-tracker/enricher.ts +0 -271
- package/core/integrations/issue-tracker/index.ts +0 -8
- package/core/integrations/issue-tracker/manager.ts +0 -286
- package/core/integrations/issue-tracker/types.ts +0 -310
- package/core/integrations/jira/cache.ts +0 -57
- package/core/integrations/jira/client.ts +0 -688
- package/core/integrations/jira/index.ts +0 -23
- package/core/integrations/jira/service.ts +0 -244
- package/core/integrations/linear/cache.ts +0 -68
- package/core/integrations/linear/client.ts +0 -436
- package/core/integrations/linear/index.ts +0 -20
- package/core/integrations/linear/service.ts +0 -260
- package/core/integrations/linear/sync.ts +0 -314
- package/core/outcomes/analyzer.ts +0 -286
- package/core/outcomes/index.ts +0 -34
- package/core/outcomes/recorder.ts +0 -195
- package/core/plugin/builtin/webhook.ts +0 -148
- package/core/plugin/hooks.ts +0 -315
- package/core/plugin/index.ts +0 -50
- package/core/plugin/loader.ts +0 -354
- package/core/plugin/registry.ts +0 -326
- package/core/schemas/agents.ts +0 -27
- package/core/schemas/analysis.ts +0 -530
- package/core/schemas/classification.ts +0 -91
- package/core/schemas/command-context.ts +0 -29
- package/core/schemas/enriched-task.ts +0 -291
- package/core/schemas/ideas.ts +0 -114
- package/core/schemas/index.ts +0 -53
- package/core/schemas/issues.ts +0 -159
- package/core/schemas/llm-output.ts +0 -170
- package/core/schemas/metrics.ts +0 -143
- package/core/schemas/model.ts +0 -153
- package/core/schemas/outcomes.ts +0 -487
- package/core/schemas/performance.ts +0 -128
- package/core/schemas/permissions.ts +0 -180
- package/core/schemas/prd.ts +0 -450
- package/core/schemas/project.ts +0 -57
- package/core/schemas/roadmap.ts +0 -322
- package/core/schemas/schemas.ts +0 -38
- package/core/schemas/shipped.ts +0 -109
- package/core/schemas/state.ts +0 -284
- package/core/schemas/velocity.ts +0 -103
- package/core/server/index.ts +0 -21
- package/core/server/routes-extended.ts +0 -566
- package/core/server/routes.ts +0 -176
- package/core/server/server.ts +0 -149
- package/core/server/sse.ts +0 -192
- package/core/services/agent-generator.ts +0 -385
- package/core/services/agent-service.ts +0 -168
- package/core/services/breakdown-service.ts +0 -124
- package/core/services/context-generator.ts +0 -445
- package/core/services/context-selector.ts +0 -429
- package/core/services/dependency-validator.ts +0 -318
- package/core/services/diff-generator.ts +0 -313
- package/core/services/doctor-service.ts +0 -423
- package/core/services/file-categorizer.ts +0 -448
- package/core/services/file-scorer.ts +0 -270
- package/core/services/git-analyzer.ts +0 -293
- package/core/services/hierarchical-agent-resolver.ts +0 -236
- package/core/services/hooks-service.ts +0 -685
- package/core/services/index.ts +0 -46
- package/core/services/local-state-generator.ts +0 -158
- package/core/services/memory-service.ts +0 -181
- package/core/services/nested-context-resolver.ts +0 -842
- package/core/services/project-index.ts +0 -911
- package/core/services/project-service.ts +0 -155
- package/core/services/session-tracker.ts +0 -287
- package/core/services/skill-installer.ts +0 -447
- package/core/services/skill-lock.ts +0 -132
- package/core/services/skill-service.ts +0 -306
- package/core/services/stack-detector.ts +0 -229
- package/core/services/staleness-checker.ts +0 -327
- package/core/services/sync-service.ts +0 -1515
- package/core/services/sync-verifier.ts +0 -253
- package/core/services/watch-service.ts +0 -312
- package/core/session/compaction.ts +0 -248
- package/core/session/index.ts +0 -35
- package/core/session/log-migration.ts +0 -88
- package/core/session/metrics.ts +0 -323
- package/core/session/session-log-manager.ts +0 -307
- package/core/session/task-session-manager.ts +0 -404
- package/core/session/utils.ts +0 -51
- package/core/storage/analysis-storage.ts +0 -373
- package/core/storage/archive-storage.ts +0 -205
- package/core/storage/database.ts +0 -575
- package/core/storage/ideas-storage.ts +0 -298
- package/core/storage/index-storage.ts +0 -523
- package/core/storage/index.ts +0 -79
- package/core/storage/metrics-storage.ts +0 -321
- package/core/storage/migrate-json.ts +0 -720
- package/core/storage/queue-storage.ts +0 -336
- package/core/storage/safe-reader.ts +0 -105
- package/core/storage/shipped-storage.ts +0 -253
- package/core/storage/state-storage.ts +0 -1035
- package/core/storage/storage-manager.ts +0 -205
- package/core/storage/storage.ts +0 -177
- package/core/storage/velocity-storage.ts +0 -149
- package/core/sync/auth-config.ts +0 -138
- package/core/sync/index.ts +0 -31
- package/core/sync/oauth-handler.ts +0 -143
- package/core/sync/sync-client.ts +0 -251
- package/core/sync/sync-manager.ts +0 -327
- package/core/tsconfig.json +0 -22
- package/core/types/agentic.ts +0 -760
- package/core/types/agents.ts +0 -150
- package/core/types/bus.ts +0 -193
- package/core/types/citations.ts +0 -22
- package/core/types/commands.ts +0 -399
- package/core/types/config.ts +0 -92
- package/core/types/core.ts +0 -96
- package/core/types/diff.ts +0 -41
- package/core/types/domain.ts +0 -71
- package/core/types/errors.ts +0 -111
- package/core/types/events.ts +0 -42
- package/core/types/fs.ts +0 -72
- package/core/types/index.ts +0 -510
- package/core/types/infrastructure.ts +0 -210
- package/core/types/integrations.ts +0 -31
- package/core/types/jira.ts +0 -51
- package/core/types/logger.ts +0 -17
- package/core/types/memory.ts +0 -313
- package/core/types/outcomes.ts +0 -190
- package/core/types/output.ts +0 -47
- package/core/types/plugin.ts +0 -25
- package/core/types/project-sync.ts +0 -129
- package/core/types/provider.ts +0 -163
- package/core/types/server.ts +0 -71
- package/core/types/services.ts +0 -84
- package/core/types/session.ts +0 -135
- package/core/types/stack.ts +0 -19
- package/core/types/storage.ts +0 -318
- package/core/types/sync-verifier.ts +0 -33
- package/core/types/sync.ts +0 -121
- package/core/types/task.ts +0 -72
- package/core/types/template.ts +0 -24
- package/core/types/utils.ts +0 -92
- package/core/types/workflow.ts +0 -23
- package/core/utils/agent-stream.ts +0 -140
- package/core/utils/animations.ts +0 -251
- package/core/utils/branding.ts +0 -88
- package/core/utils/cache.ts +0 -187
- package/core/utils/citations.ts +0 -39
- package/core/utils/collection-filters.ts +0 -209
- package/core/utils/date-helper.ts +0 -176
- package/core/utils/error-messages.ts +0 -38
- package/core/utils/file-helper.ts +0 -277
- package/core/utils/fs-helpers.ts +0 -14
- package/core/utils/help.ts +0 -314
- package/core/utils/jsonl-helper.ts +0 -290
- package/core/utils/keychain.ts +0 -127
- package/core/utils/logger.ts +0 -77
- package/core/utils/markdown-builder.ts +0 -280
- package/core/utils/next-steps.ts +0 -95
- package/core/utils/output.ts +0 -403
- package/core/utils/preserve-sections.ts +0 -218
- package/core/utils/project-commands.ts +0 -126
- package/core/utils/project-credentials.ts +0 -143
- package/core/utils/provider-cache.ts +0 -49
- package/core/utils/retry.ts +0 -318
- package/core/utils/runtime.ts +0 -108
- package/core/utils/session-helper.ts +0 -278
- package/core/utils/subtask-table.ts +0 -227
- package/core/utils/version.ts +0 -128
- package/core/wizard/index.ts +0 -13
- package/core/wizard/onboarding.ts +0 -633
- package/core/workflow/index.ts +0 -7
- package/core/workflow/state-machine.ts +0 -198
- package/core/workflow/workflow-preferences.ts +0 -294
- package/dist/core/infrastructure/command-installer.js +0 -1141
- package/dist/core/infrastructure/editors-config.js +0 -177
- package/dist/core/infrastructure/setup.js +0 -2244
- package/dist/core/utils/version.js +0 -141
- package/templates/agentic/agent-routing.md +0 -45
- package/templates/agentic/agents/uxui.md +0 -63
- package/templates/agentic/checklist-routing.md +0 -98
- package/templates/agentic/orchestrator.md +0 -68
- package/templates/agentic/task-fragmentation.md +0 -89
- package/templates/agents/AGENTS.md +0 -68
- package/templates/analysis/analyze.md +0 -84
- package/templates/analysis/patterns.md +0 -60
- package/templates/antigravity/SKILL.md +0 -39
- package/templates/architect/discovery.md +0 -67
- package/templates/architect/phases.md +0 -59
- package/templates/checklists/architecture.md +0 -28
- package/templates/checklists/code-quality.md +0 -28
- package/templates/checklists/data.md +0 -33
- package/templates/checklists/documentation.md +0 -33
- package/templates/checklists/infrastructure.md +0 -33
- package/templates/checklists/performance.md +0 -33
- package/templates/checklists/security.md +0 -33
- package/templates/checklists/testing.md +0 -33
- package/templates/checklists/ux-ui.md +0 -37
- package/templates/commands/analyze.md +0 -56
- package/templates/commands/auth.md +0 -234
- package/templates/commands/bug.md +0 -163
- package/templates/commands/cleanup.md +0 -19
- package/templates/commands/dash.md +0 -99
- package/templates/commands/design.md +0 -15
- package/templates/commands/done.md +0 -291
- package/templates/commands/enrich.md +0 -174
- package/templates/commands/git.md +0 -295
- package/templates/commands/history.md +0 -389
- package/templates/commands/idea.md +0 -88
- package/templates/commands/impact.md +0 -864
- package/templates/commands/init.md +0 -54
- package/templates/commands/jira.md +0 -278
- package/templates/commands/linear.md +0 -288
- package/templates/commands/merge.md +0 -206
- package/templates/commands/next.md +0 -80
- package/templates/commands/p.md +0 -67
- package/templates/commands/p.toml +0 -37
- package/templates/commands/pause.md +0 -136
- package/templates/commands/plan.md +0 -696
- package/templates/commands/prd.md +0 -356
- package/templates/commands/resume.md +0 -171
- package/templates/commands/review.md +0 -276
- package/templates/commands/serve.md +0 -118
- package/templates/commands/setup.md +0 -91
- package/templates/commands/ship.md +0 -475
- package/templates/commands/skill.md +0 -259
- package/templates/commands/spec.md +0 -218
- package/templates/commands/status.md +0 -207
- package/templates/commands/sync.md +0 -104
- package/templates/commands/task.md +0 -312
- package/templates/commands/test.md +0 -93
- package/templates/commands/update.md +0 -63
- package/templates/commands/verify.md +0 -204
- package/templates/commands/workflow.md +0 -150
- package/templates/config/skill-mappings.json +0 -82
- package/templates/context/dashboard.md +0 -256
- package/templates/context/roadmap.md +0 -221
- package/templates/cursor/commands/bug.md +0 -8
- package/templates/cursor/commands/done.md +0 -4
- package/templates/cursor/commands/pause.md +0 -6
- package/templates/cursor/commands/resume.md +0 -4
- package/templates/cursor/commands/ship.md +0 -8
- package/templates/cursor/commands/sync.md +0 -4
- package/templates/cursor/commands/task.md +0 -8
- package/templates/cursor/p.md +0 -29
- package/templates/cursor/router.mdc +0 -28
- package/templates/design/api.md +0 -95
- package/templates/design/architecture.md +0 -77
- package/templates/design/component.md +0 -89
- package/templates/design/database.md +0 -78
- package/templates/design/flow.md +0 -94
- package/templates/global/ANTIGRAVITY.md +0 -254
- package/templates/global/CLAUDE.md +0 -497
- package/templates/global/CURSOR.mdc +0 -266
- package/templates/global/GEMINI.md +0 -293
- package/templates/global/STORAGE-SPEC.md +0 -391
- package/templates/global/WINDSURF.md +0 -266
- package/templates/global/modules/CLAUDE-commands.md +0 -70
- package/templates/global/modules/CLAUDE-core.md +0 -105
- package/templates/global/modules/CLAUDE-git.md +0 -50
- package/templates/global/modules/CLAUDE-intelligence.md +0 -92
- package/templates/global/modules/CLAUDE-storage.md +0 -50
- package/templates/global/modules/module-config.json +0 -36
- package/templates/mcp-config.json +0 -19
- package/templates/permissions/default.jsonc +0 -60
- package/templates/permissions/permissive.jsonc +0 -49
- package/templates/permissions/strict.jsonc +0 -58
- package/templates/planning-methodology.md +0 -195
- package/templates/skills/code-review.md +0 -47
- package/templates/skills/debug.md +0 -61
- package/templates/skills/refactor.md +0 -47
- package/templates/subagents/agent-base.md +0 -20
- package/templates/subagents/domain/backend.md +0 -109
- package/templates/subagents/domain/database.md +0 -121
- package/templates/subagents/domain/devops.md +0 -152
- package/templates/subagents/domain/frontend.md +0 -103
- package/templates/subagents/domain/testing.md +0 -169
- package/templates/subagents/pm-expert.md +0 -366
- package/templates/subagents/workflow/chief-architect.md +0 -657
- package/templates/subagents/workflow/prjct-planner.md +0 -159
- package/templates/subagents/workflow/prjct-shipper.md +0 -188
- package/templates/subagents/workflow/prjct-workflow.md +0 -98
- package/templates/tools/bash.txt +0 -22
- package/templates/tools/edit.txt +0 -18
- package/templates/tools/glob.txt +0 -19
- package/templates/tools/grep.txt +0 -21
- package/templates/tools/read.txt +0 -14
- package/templates/tools/task.txt +0 -20
- package/templates/tools/webfetch.txt +0 -16
- package/templates/tools/websearch.txt +0 -18
- package/templates/tools/write.txt +0 -17
- package/templates/windsurf/router.md +0 -28
- package/templates/windsurf/workflows/bug.md +0 -8
- package/templates/windsurf/workflows/done.md +0 -4
- package/templates/windsurf/workflows/pause.md +0 -4
- package/templates/windsurf/workflows/resume.md +0 -4
- package/templates/windsurf/workflows/ship.md +0 -8
- package/templates/windsurf/workflows/sync.md +0 -4
- package/templates/windsurf/workflows/task.md +0 -8
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prjct-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.0",
|
|
4
4
|
"description": "Context layer for AI agents. Project context for Claude Code, Gemini CLI, and more.",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "dist/bin/prjct.mjs",
|
|
6
6
|
"bin": {
|
|
7
7
|
"prjct": "bin/prjct"
|
|
8
8
|
},
|
|
@@ -86,16 +86,15 @@
|
|
|
86
86
|
},
|
|
87
87
|
"files": [
|
|
88
88
|
"assets/",
|
|
89
|
-
"bin/",
|
|
90
|
-
"core/",
|
|
89
|
+
"bin/prjct",
|
|
91
90
|
"dist/",
|
|
92
|
-
"templates/",
|
|
93
91
|
"scripts/postinstall.js",
|
|
94
92
|
"scripts/install.sh",
|
|
95
93
|
"LICENSE",
|
|
96
94
|
"README.md",
|
|
97
95
|
"CHANGELOG.md"
|
|
98
96
|
],
|
|
97
|
+
"prepublishOnly": "node scripts/build.js",
|
|
99
98
|
"trustedDependencies": [
|
|
100
99
|
"chalk",
|
|
101
100
|
"prompts"
|
package/bin/prjct.ts
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* prjct CLI entry point
|
|
3
|
-
*
|
|
4
|
-
* Auto-setup on first use (like Astro, Vite, etc.)
|
|
5
|
-
* Supports both Bun and Node.js runtimes.
|
|
6
|
-
*
|
|
7
|
-
* IMPORTANT: postinstall.js often doesn't run, so we detect and
|
|
8
|
-
* auto-install on first CLI use. This is the reliable path.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
// Performance: capture process start time (nanosecond precision)
|
|
12
|
-
// Exposed via globalThis so core/index.ts can read it for startup time metrics
|
|
13
|
-
;(globalThis as Record<string, unknown>).__perfStartNs = process.hrtime.bigint()
|
|
14
|
-
|
|
15
|
-
import os from 'node:os'
|
|
16
|
-
import path from 'node:path'
|
|
17
|
-
import chalk from 'chalk'
|
|
18
|
-
import { detectAllProviders } from '../core/infrastructure/ai-provider'
|
|
19
|
-
import configManager from '../core/infrastructure/config-manager'
|
|
20
|
-
import editorsConfig from '../core/infrastructure/editors-config'
|
|
21
|
-
import { DEFAULT_PORT, startServer } from '../core/server/server'
|
|
22
|
-
import { fileExists } from '../core/utils/fs-helpers'
|
|
23
|
-
import { invalidateProviderCache } from '../core/utils/provider-cache'
|
|
24
|
-
import { VERSION } from '../core/utils/version'
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Check if routers are installed for detected providers
|
|
28
|
-
* Returns true if at least one provider has its router installed
|
|
29
|
-
*/
|
|
30
|
-
async function checkRoutersInstalled(): Promise<boolean> {
|
|
31
|
-
const home = os.homedir()
|
|
32
|
-
const detection = await detectAllProviders()
|
|
33
|
-
|
|
34
|
-
// Check Claude router
|
|
35
|
-
if (detection.claude.installed) {
|
|
36
|
-
const claudeRouter = path.join(home, '.claude', 'commands', 'p.md')
|
|
37
|
-
if (!(await fileExists(claudeRouter))) {
|
|
38
|
-
return false
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Check Gemini router
|
|
43
|
-
if (detection.gemini.installed) {
|
|
44
|
-
const geminiRouter = path.join(home, '.gemini', 'commands', 'p.toml')
|
|
45
|
-
if (!(await fileExists(geminiRouter))) {
|
|
46
|
-
return false
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// If no providers detected, consider it "installed" (setup will handle)
|
|
51
|
-
if (!detection.claude.installed && !detection.gemini.installed) {
|
|
52
|
-
return true
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return true
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Check for special subcommands that bypass normal CLI
|
|
59
|
-
const args = process.argv.slice(2)
|
|
60
|
-
|
|
61
|
-
// Parse --quiet / -q flag (must be done early, before any output)
|
|
62
|
-
const quietIndex = args.findIndex((arg) => arg === '--quiet' || arg === '-q')
|
|
63
|
-
const isQuietMode = quietIndex !== -1
|
|
64
|
-
if (isQuietMode) {
|
|
65
|
-
args.splice(quietIndex, 1) // Remove flag from args
|
|
66
|
-
const { setQuietMode } = await import('../core/utils/output')
|
|
67
|
-
setQuietMode(true)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Parse --refresh flag (force re-detection of providers, invalidate cache)
|
|
71
|
-
const refreshIndex = args.indexOf('--refresh')
|
|
72
|
-
const isRefresh = refreshIndex !== -1
|
|
73
|
-
if (isRefresh) {
|
|
74
|
-
args.splice(refreshIndex, 1)
|
|
75
|
-
await invalidateProviderCache()
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Colors for output (chalk respects NO_COLOR env)
|
|
79
|
-
|
|
80
|
-
// Session tracking for commands that bypass core/index.ts
|
|
81
|
-
async function trackSession(command: string): Promise<() => void> {
|
|
82
|
-
const start = Date.now()
|
|
83
|
-
try {
|
|
84
|
-
const projectId = await configManager.getProjectId(process.cwd())
|
|
85
|
-
if (projectId) {
|
|
86
|
-
const { sessionTracker } = await import('../core/services/session-tracker')
|
|
87
|
-
await sessionTracker.expireIfStale(projectId)
|
|
88
|
-
await sessionTracker.touch(projectId)
|
|
89
|
-
return () => {
|
|
90
|
-
const durationMs = Date.now() - start
|
|
91
|
-
sessionTracker.trackCommand(projectId, command, durationMs).catch(() => {})
|
|
92
|
-
|
|
93
|
-
// Performance tracking (non-critical, lazy-loaded)
|
|
94
|
-
import('../core/infrastructure/performance-tracker')
|
|
95
|
-
.then(({ performanceTracker }) => {
|
|
96
|
-
performanceTracker
|
|
97
|
-
.recordTiming(projectId, 'command_duration', durationMs, { command })
|
|
98
|
-
.catch(() => {})
|
|
99
|
-
performanceTracker.recordMemory(projectId, { command }).catch(() => {})
|
|
100
|
-
})
|
|
101
|
-
.catch(() => {})
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
} catch {
|
|
105
|
-
// Non-critical
|
|
106
|
-
}
|
|
107
|
-
return () => {}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (args[0] === 'start' || args[0] === 'setup') {
|
|
111
|
-
// Interactive setup with beautiful UI
|
|
112
|
-
const { runStart } = await import('../core/cli/start')
|
|
113
|
-
await runStart()
|
|
114
|
-
} else if (args[0] === 'dev') {
|
|
115
|
-
// Dev mode - placeholder for future development server
|
|
116
|
-
console.log('Dev mode is not yet implemented.')
|
|
117
|
-
console.log('Use "prjct serve" to start the web server.')
|
|
118
|
-
process.exitCode = 0
|
|
119
|
-
} else if (args[0] === 'web' || args[0] === 'serve') {
|
|
120
|
-
// Launch prjct web server
|
|
121
|
-
try {
|
|
122
|
-
const projectPath = process.cwd()
|
|
123
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
124
|
-
|
|
125
|
-
if (!projectId) {
|
|
126
|
-
console.error('No prjct project found. Run "prjct init" first.')
|
|
127
|
-
process.exitCode = 1
|
|
128
|
-
} else {
|
|
129
|
-
const port = parseInt(args[1], 10) || DEFAULT_PORT
|
|
130
|
-
await startServer(projectId, projectPath, port)
|
|
131
|
-
}
|
|
132
|
-
} catch (error) {
|
|
133
|
-
console.error('Server error:', (error as Error).message)
|
|
134
|
-
process.exitCode = 1
|
|
135
|
-
}
|
|
136
|
-
} else if (args[0] === 'context') {
|
|
137
|
-
// Context tools - smart context filtering for AI agents
|
|
138
|
-
const projectPath = process.cwd()
|
|
139
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
140
|
-
|
|
141
|
-
if (!projectId) {
|
|
142
|
-
console.error('No prjct project found. Run "prjct init" first.')
|
|
143
|
-
process.exitCode = 1
|
|
144
|
-
} else {
|
|
145
|
-
const done = await trackSession('context')
|
|
146
|
-
const { runContextTool } = await import('../core/context-tools')
|
|
147
|
-
const result = await runContextTool(args.slice(1), projectId, projectPath)
|
|
148
|
-
console.log(JSON.stringify(result, null, 2))
|
|
149
|
-
process.exitCode = result.tool === 'error' ? 1 : 0
|
|
150
|
-
done()
|
|
151
|
-
}
|
|
152
|
-
} else if (args[0] === 'hooks') {
|
|
153
|
-
// Git hooks management
|
|
154
|
-
const done = await trackSession('hooks')
|
|
155
|
-
const { hooksService } = await import('../core/services/hooks-service')
|
|
156
|
-
const subcommand = args[1] || 'status'
|
|
157
|
-
const exitCode = await hooksService.run(process.cwd(), subcommand)
|
|
158
|
-
process.exitCode = exitCode
|
|
159
|
-
done()
|
|
160
|
-
} else if (args[0] === 'doctor') {
|
|
161
|
-
// Health check command
|
|
162
|
-
const done = await trackSession('doctor')
|
|
163
|
-
const { doctorService } = await import('../core/services/doctor-service')
|
|
164
|
-
const exitCode = await doctorService.run(process.cwd())
|
|
165
|
-
process.exitCode = exitCode
|
|
166
|
-
done()
|
|
167
|
-
} else if (args[0] === 'uninstall') {
|
|
168
|
-
// Complete system removal
|
|
169
|
-
const { uninstall } = await import('../core/commands/uninstall')
|
|
170
|
-
|
|
171
|
-
// Parse flags
|
|
172
|
-
const force = args.includes('--force') || args.includes('-f')
|
|
173
|
-
const backup = args.includes('--backup') || args.includes('-b')
|
|
174
|
-
const dryRun = args.includes('--dry-run') || args.includes('-n')
|
|
175
|
-
const keepPackage = args.includes('--keep-package')
|
|
176
|
-
|
|
177
|
-
const result = await uninstall({ force, backup, dryRun, keepPackage })
|
|
178
|
-
process.exitCode = result.success ? 0 : 1
|
|
179
|
-
} else if (args[0] === 'watch') {
|
|
180
|
-
// Watch mode - auto-sync on file changes
|
|
181
|
-
const projectPath = process.cwd()
|
|
182
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
183
|
-
|
|
184
|
-
if (!projectId) {
|
|
185
|
-
console.error('No prjct project found. Run "prjct init" first.')
|
|
186
|
-
process.exitCode = 1
|
|
187
|
-
} else {
|
|
188
|
-
const { watchService } = await import('../core/services/watch-service')
|
|
189
|
-
|
|
190
|
-
// Parse options
|
|
191
|
-
const verbose = args.includes('--verbose') || args.includes('-v')
|
|
192
|
-
const debounceArg = args.find((a) => a.startsWith('--debounce='))
|
|
193
|
-
const debounceMs = debounceArg ? parseInt(debounceArg.split('=')[1], 10) : undefined
|
|
194
|
-
const intervalArg = args.find((a) => a.startsWith('--interval='))
|
|
195
|
-
const minIntervalMs = intervalArg ? parseInt(intervalArg.split('=')[1], 10) * 1000 : undefined
|
|
196
|
-
|
|
197
|
-
const result = await watchService.start(projectPath, {
|
|
198
|
-
verbose,
|
|
199
|
-
quiet: isQuietMode,
|
|
200
|
-
debounceMs,
|
|
201
|
-
minIntervalMs,
|
|
202
|
-
})
|
|
203
|
-
|
|
204
|
-
if (!result.success) {
|
|
205
|
-
console.error(result.error)
|
|
206
|
-
process.exitCode = 1
|
|
207
|
-
}
|
|
208
|
-
// Watch mode runs indefinitely until Ctrl+C
|
|
209
|
-
}
|
|
210
|
-
} else if (args[0] === 'linear') {
|
|
211
|
-
// Linear CLI subcommand - direct access to Linear SDK
|
|
212
|
-
const { spawn } = await import('node:child_process')
|
|
213
|
-
const projectPath = process.cwd()
|
|
214
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
215
|
-
|
|
216
|
-
if (!projectId) {
|
|
217
|
-
console.error('No prjct project found. Run "prjct init" first.')
|
|
218
|
-
process.exitCode = 1
|
|
219
|
-
} else {
|
|
220
|
-
// Get the path to the linear CLI
|
|
221
|
-
const linearCliPath = path.join(__dirname, '..', 'core', 'cli', 'linear.ts')
|
|
222
|
-
|
|
223
|
-
// Forward args to linear CLI, adding --project flag
|
|
224
|
-
const linearArgs = ['--project', projectId, ...args.slice(1)]
|
|
225
|
-
|
|
226
|
-
// Use bun to run the CLI
|
|
227
|
-
const child = spawn('bun', [linearCliPath, ...linearArgs], {
|
|
228
|
-
stdio: 'inherit',
|
|
229
|
-
cwd: projectPath,
|
|
230
|
-
})
|
|
231
|
-
|
|
232
|
-
child.on('close', (code) => {
|
|
233
|
-
process.exitCode = code || 0
|
|
234
|
-
})
|
|
235
|
-
}
|
|
236
|
-
} else if (args[0] === 'help' || args[0] === '-h' || args[0] === '--help') {
|
|
237
|
-
// Show help - bypass setup check to always show help
|
|
238
|
-
const { getHelp } = await import('../core/utils/help')
|
|
239
|
-
const topic = args[1] // Optional: prjct help <command>
|
|
240
|
-
console.log(getHelp(topic))
|
|
241
|
-
process.exitCode = 0
|
|
242
|
-
} else if (args[0] === 'version' || args[0] === '-v' || args[0] === '--version') {
|
|
243
|
-
// Show version with provider status (uses cached detection unless --refresh)
|
|
244
|
-
const detection = await detectAllProviders(isRefresh)
|
|
245
|
-
const home = os.homedir()
|
|
246
|
-
const cwd = process.cwd()
|
|
247
|
-
const [
|
|
248
|
-
claudeConfigured,
|
|
249
|
-
geminiConfigured,
|
|
250
|
-
cursorDetected,
|
|
251
|
-
cursorConfigured,
|
|
252
|
-
windsurfDetected,
|
|
253
|
-
windsurfConfigured,
|
|
254
|
-
] = await Promise.all([
|
|
255
|
-
fileExists(path.join(home, '.claude', 'commands', 'p.md')),
|
|
256
|
-
fileExists(path.join(home, '.gemini', 'commands', 'p.toml')),
|
|
257
|
-
fileExists(path.join(cwd, '.cursor')),
|
|
258
|
-
fileExists(path.join(cwd, '.cursor', 'rules', 'prjct.mdc')),
|
|
259
|
-
fileExists(path.join(cwd, '.windsurf')),
|
|
260
|
-
fileExists(path.join(cwd, '.windsurf', 'rules', 'prjct.md')),
|
|
261
|
-
])
|
|
262
|
-
|
|
263
|
-
console.log(`
|
|
264
|
-
${chalk.cyan('p/')} prjct v${VERSION}
|
|
265
|
-
${chalk.dim('Context layer for AI coding agents')}
|
|
266
|
-
|
|
267
|
-
${chalk.dim('Providers:')}`)
|
|
268
|
-
|
|
269
|
-
// Claude status
|
|
270
|
-
if (detection.claude.installed) {
|
|
271
|
-
const status = claudeConfigured ? chalk.green('✓ ready') : chalk.yellow('● installed')
|
|
272
|
-
const ver = detection.claude.version ? ` (v${detection.claude.version})` : ''
|
|
273
|
-
console.log(` Claude Code ${status}${chalk.dim(ver)}`)
|
|
274
|
-
} else {
|
|
275
|
-
console.log(` Claude Code ${chalk.dim('○ not installed')}`)
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Gemini status
|
|
279
|
-
if (detection.gemini.installed) {
|
|
280
|
-
const status = geminiConfigured ? chalk.green('✓ ready') : chalk.yellow('● installed')
|
|
281
|
-
const ver = detection.gemini.version ? ` (v${detection.gemini.version})` : ''
|
|
282
|
-
console.log(` Gemini CLI ${status}${chalk.dim(ver)}`)
|
|
283
|
-
} else {
|
|
284
|
-
console.log(` Gemini CLI ${chalk.dim('○ not installed')}`)
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// Cursor status (project-level)
|
|
288
|
-
if (cursorDetected) {
|
|
289
|
-
const status = cursorConfigured ? chalk.green('✓ ready') : chalk.yellow('● detected')
|
|
290
|
-
console.log(` Cursor IDE ${status}${chalk.dim(' (project)')}`)
|
|
291
|
-
} else {
|
|
292
|
-
console.log(` Cursor IDE ${chalk.dim('○ not detected')}`)
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// Windsurf status (project-level)
|
|
296
|
-
if (windsurfDetected) {
|
|
297
|
-
const status = windsurfConfigured ? chalk.green('✓ ready') : chalk.yellow('● detected')
|
|
298
|
-
console.log(` Windsurf IDE ${status}${chalk.dim(' (project)')}`)
|
|
299
|
-
} else {
|
|
300
|
-
console.log(` Windsurf IDE ${chalk.dim('○ not detected')}`)
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
console.log(`
|
|
304
|
-
${chalk.dim("Run 'prjct start' to configure (CLI providers)")}
|
|
305
|
-
${chalk.dim("Run 'prjct init' to configure (Cursor/Windsurf IDE)")}
|
|
306
|
-
${chalk.cyan('https://prjct.app')}
|
|
307
|
-
`)
|
|
308
|
-
} else {
|
|
309
|
-
// Check if setup has been done
|
|
310
|
-
const configPath = path.join(os.homedir(), '.prjct-cli', 'config', 'installed-editors.json')
|
|
311
|
-
const routersInstalled = await checkRoutersInstalled()
|
|
312
|
-
|
|
313
|
-
if (!(await fileExists(configPath)) || !routersInstalled) {
|
|
314
|
-
// First time - prompt to run start
|
|
315
|
-
console.log(`
|
|
316
|
-
${chalk.cyan.bold(' Welcome to prjct!')}
|
|
317
|
-
|
|
318
|
-
Run ${chalk.bold('prjct start')} to configure your AI providers.
|
|
319
|
-
|
|
320
|
-
${chalk.dim(`This is a one-time setup that lets you choose between
|
|
321
|
-
Claude Code, Gemini CLI, or both.`)}
|
|
322
|
-
`)
|
|
323
|
-
process.exitCode = 0
|
|
324
|
-
} else {
|
|
325
|
-
// Check version and auto-update if needed
|
|
326
|
-
try {
|
|
327
|
-
const lastVersion = await editorsConfig.getLastVersion()
|
|
328
|
-
|
|
329
|
-
if (lastVersion && lastVersion !== VERSION) {
|
|
330
|
-
console.log(`\n${chalk.yellow('ℹ')} Updating prjct v${lastVersion} → v${VERSION}...\n`)
|
|
331
|
-
|
|
332
|
-
const { default: setup } = await import('../core/infrastructure/setup')
|
|
333
|
-
await setup.run()
|
|
334
|
-
}
|
|
335
|
-
} catch (_error) {
|
|
336
|
-
// Silent fail on version check
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
// Continue to main CLI logic
|
|
340
|
-
await import('../core/index')
|
|
341
|
-
}
|
|
342
|
-
}
|