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/core/services/index.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Services Layer
|
|
3
|
-
*
|
|
4
|
-
* Exports all service modules for use across the application.
|
|
5
|
-
* Services encapsulate business logic extracted from CommandBase.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// Re-export types from canonical source
|
|
9
|
-
export type {
|
|
10
|
-
ComplexityEstimate,
|
|
11
|
-
MemoryServiceEntry,
|
|
12
|
-
Severity,
|
|
13
|
-
Skill,
|
|
14
|
-
SkillMetadata,
|
|
15
|
-
SkillSearchResult,
|
|
16
|
-
} from '../types'
|
|
17
|
-
export type { AgentInfo, ProjectStats } from './agent-generator'
|
|
18
|
-
// Agent Generator - Extracted from sync-service (PRJ-87)
|
|
19
|
-
export { AgentGenerator, createAgentGenerator } from './agent-generator'
|
|
20
|
-
export { AgentService, agentService } from './agent-service'
|
|
21
|
-
export { BreakdownService, breakdownService } from './breakdown-service'
|
|
22
|
-
export type { ContextSelectionOptions, SelectedContext } from './context-selector'
|
|
23
|
-
// Context Selector - Task-based context selection (PRJ-85)
|
|
24
|
-
export { ContextSelector, contextSelector } from './context-selector'
|
|
25
|
-
export type { CategorizationOptions, CategorizationResult } from './file-categorizer'
|
|
26
|
-
// File Categorizer - Smart Context Selection (PRJ-85)
|
|
27
|
-
export { FileCategorizer, fileCategorizer } from './file-categorizer'
|
|
28
|
-
export type { FileScore, FileStats, ScoringContext } from './file-scorer'
|
|
29
|
-
// File Scorer
|
|
30
|
-
export { FileScorer, fileScorer } from './file-scorer'
|
|
31
|
-
export type { GitData } from './git-analyzer'
|
|
32
|
-
// Git Analyzer - Extracted from sync-service (PRJ-85)
|
|
33
|
-
export { GitAnalyzer, getEmptyGitData, gitAnalyzer } from './git-analyzer'
|
|
34
|
-
export { MemoryService, memoryService } from './memory-service'
|
|
35
|
-
export type { ContextSection, NestedContext, ResolvedContext } from './nested-context-resolver'
|
|
36
|
-
// Nested Context Resolver - Monorepo PRJCT.md inheritance (PRJ-118)
|
|
37
|
-
export { NestedContextResolver } from './nested-context-resolver'
|
|
38
|
-
export type { IndexOptions, RelevantContext, ScanResult } from './project-index'
|
|
39
|
-
// Project Index - Persistent scanning with scoring
|
|
40
|
-
export { createProjectIndexer, ProjectIndexer, RELEVANCE_THRESHOLD } from './project-index'
|
|
41
|
-
export { ProjectService, projectService } from './project-service'
|
|
42
|
-
export type { StalenessConfig, StalenessStatus } from './staleness-checker'
|
|
43
|
-
// Staleness Checker - Detect when CLAUDE.md is stale (PRJ-120)
|
|
44
|
-
export { createStalenessChecker, StalenessChecker } from './staleness-checker'
|
|
45
|
-
export type { SyncResult } from './sync-service'
|
|
46
|
-
export { SyncService, syncService } from './sync-service'
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local State Generator
|
|
3
|
-
*
|
|
4
|
-
* Generates .prjct-state.md in the project root for local persistence.
|
|
5
|
-
* This provides a quick reference to current task state without needing
|
|
6
|
-
* to access global storage.
|
|
7
|
-
*
|
|
8
|
-
* @see PRJ-112
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import fs from 'node:fs/promises'
|
|
12
|
-
import path from 'node:path'
|
|
13
|
-
import type { StateJson } from '../schemas/state'
|
|
14
|
-
import { isNotFoundError } from '../types/fs'
|
|
15
|
-
|
|
16
|
-
const LOCAL_STATE_FILENAME = '.prjct-state.md'
|
|
17
|
-
|
|
18
|
-
// Extended runtime types (state.json has fields not in strict schema)
|
|
19
|
-
interface RuntimeTask {
|
|
20
|
-
description: string
|
|
21
|
-
startedAt: string
|
|
22
|
-
linearId?: string
|
|
23
|
-
branch?: string
|
|
24
|
-
status?: string
|
|
25
|
-
subtasks?: Array<{
|
|
26
|
-
description: string
|
|
27
|
-
status: string
|
|
28
|
-
}>
|
|
29
|
-
currentSubtaskIndex?: number
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
interface RuntimePreviousTask {
|
|
33
|
-
description: string
|
|
34
|
-
status: string
|
|
35
|
-
prUrl?: string
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
class LocalStateGenerator {
|
|
39
|
-
/**
|
|
40
|
-
* Generate .prjct-state.md in the project root
|
|
41
|
-
*/
|
|
42
|
-
async generate(projectPath: string, state: StateJson): Promise<void> {
|
|
43
|
-
const filePath = path.join(projectPath, LOCAL_STATE_FILENAME)
|
|
44
|
-
const content = this.toMarkdown(state)
|
|
45
|
-
await fs.writeFile(filePath, content, 'utf-8')
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Remove local state file
|
|
50
|
-
*/
|
|
51
|
-
async remove(projectPath: string): Promise<void> {
|
|
52
|
-
const filePath = path.join(projectPath, LOCAL_STATE_FILENAME)
|
|
53
|
-
try {
|
|
54
|
-
await fs.unlink(filePath)
|
|
55
|
-
} catch (error) {
|
|
56
|
-
if (!isNotFoundError(error)) throw error
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Check if local state file exists
|
|
62
|
-
*/
|
|
63
|
-
async exists(projectPath: string): Promise<boolean> {
|
|
64
|
-
const filePath = path.join(projectPath, LOCAL_STATE_FILENAME)
|
|
65
|
-
try {
|
|
66
|
-
await fs.access(filePath)
|
|
67
|
-
return true
|
|
68
|
-
} catch {
|
|
69
|
-
return false
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Convert state to markdown format
|
|
75
|
-
* Note: Uses runtime types since state.json has fields not in strict Zod schema
|
|
76
|
-
*/
|
|
77
|
-
private toMarkdown(state: StateJson): string {
|
|
78
|
-
const lines: string[] = [
|
|
79
|
-
'<!-- Auto-generated by prjct - DO NOT EDIT -->',
|
|
80
|
-
'<!-- This file provides local state persistence for AI tools -->',
|
|
81
|
-
'',
|
|
82
|
-
'# prjct State',
|
|
83
|
-
'',
|
|
84
|
-
]
|
|
85
|
-
|
|
86
|
-
if (state.currentTask) {
|
|
87
|
-
// Cast to runtime type (state.json has additional fields)
|
|
88
|
-
const task = state.currentTask as unknown as RuntimeTask
|
|
89
|
-
lines.push('## Current Task')
|
|
90
|
-
lines.push('')
|
|
91
|
-
lines.push(`**${task.description}**`)
|
|
92
|
-
lines.push('')
|
|
93
|
-
lines.push(`- Started: ${task.startedAt}`)
|
|
94
|
-
if (task.linearId) {
|
|
95
|
-
lines.push(`- Linear: ${task.linearId}`)
|
|
96
|
-
}
|
|
97
|
-
if (task.branch) {
|
|
98
|
-
lines.push(`- Branch: ${task.branch}`)
|
|
99
|
-
}
|
|
100
|
-
lines.push(`- Status: ${task.status || 'active'}`)
|
|
101
|
-
lines.push('')
|
|
102
|
-
|
|
103
|
-
// Subtasks
|
|
104
|
-
if (task.subtasks && task.subtasks.length > 0) {
|
|
105
|
-
lines.push('### Subtasks')
|
|
106
|
-
lines.push('')
|
|
107
|
-
|
|
108
|
-
task.subtasks.forEach((subtask, index) => {
|
|
109
|
-
const statusIcon =
|
|
110
|
-
subtask.status === 'completed' ? '✅' : subtask.status === 'in_progress' ? '▶️' : '⏳'
|
|
111
|
-
const isActive = index === task.currentSubtaskIndex ? ' ← **Active**' : ''
|
|
112
|
-
lines.push(`${index + 1}. ${statusIcon} ${subtask.description}${isActive}`)
|
|
113
|
-
})
|
|
114
|
-
|
|
115
|
-
lines.push('')
|
|
116
|
-
|
|
117
|
-
// Progress
|
|
118
|
-
const completed = task.subtasks.filter((s) => s.status === 'completed').length
|
|
119
|
-
const total = task.subtasks.length
|
|
120
|
-
const percentage = Math.round((completed / total) * 100)
|
|
121
|
-
lines.push(`**Progress**: ${completed}/${total} (${percentage}%)`)
|
|
122
|
-
lines.push('')
|
|
123
|
-
}
|
|
124
|
-
} else {
|
|
125
|
-
lines.push('*No active task*')
|
|
126
|
-
lines.push('')
|
|
127
|
-
lines.push('Start a task with `p. task "description"`')
|
|
128
|
-
lines.push('')
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// Previous task info
|
|
132
|
-
if (state.previousTask) {
|
|
133
|
-
// Cast to runtime type
|
|
134
|
-
const prevTask = state.previousTask as unknown as RuntimePreviousTask
|
|
135
|
-
lines.push('---')
|
|
136
|
-
lines.push('')
|
|
137
|
-
lines.push('## Previous Task')
|
|
138
|
-
lines.push('')
|
|
139
|
-
lines.push(`**${prevTask.description}**`)
|
|
140
|
-
lines.push('')
|
|
141
|
-
lines.push(`- Status: ${prevTask.status}`)
|
|
142
|
-
if (prevTask.prUrl) {
|
|
143
|
-
lines.push(`- PR: ${prevTask.prUrl}`)
|
|
144
|
-
}
|
|
145
|
-
lines.push('')
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Footer
|
|
149
|
-
lines.push('---')
|
|
150
|
-
lines.push(`*Last updated: ${state.lastUpdated || new Date().toISOString()}*`)
|
|
151
|
-
lines.push('')
|
|
152
|
-
|
|
153
|
-
return lines.join('\n')
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export const localStateGenerator = new LocalStateGenerator()
|
|
158
|
-
export default localStateGenerator
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MemoryService - Event logging and memory management
|
|
3
|
-
*
|
|
4
|
-
* Handles logging actions to memory for audit trail and context building.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import configManager from '../infrastructure/config-manager'
|
|
8
|
-
import pathManager from '../infrastructure/path-manager'
|
|
9
|
-
import { ARCHIVE_POLICIES, archiveStorage } from '../storage/archive-storage'
|
|
10
|
-
import type { MemoryServiceEntry } from '../types'
|
|
11
|
-
import { getErrorMessage, isNotFoundError } from '../types/fs'
|
|
12
|
-
import { getTimestamp } from '../utils/date-helper'
|
|
13
|
-
import * as jsonlHelper from '../utils/jsonl-helper'
|
|
14
|
-
|
|
15
|
-
export class MemoryService {
|
|
16
|
-
/**
|
|
17
|
-
* Log an action to memory
|
|
18
|
-
*/
|
|
19
|
-
async log(
|
|
20
|
-
projectPath: string,
|
|
21
|
-
action: string,
|
|
22
|
-
data: Record<string, unknown>,
|
|
23
|
-
author?: string
|
|
24
|
-
): Promise<void> {
|
|
25
|
-
try {
|
|
26
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
27
|
-
if (!projectId) return
|
|
28
|
-
|
|
29
|
-
const memoryPath = pathManager.getFilePath(projectId, 'memory', 'context.jsonl')
|
|
30
|
-
|
|
31
|
-
const entry: MemoryServiceEntry = {
|
|
32
|
-
timestamp: getTimestamp(),
|
|
33
|
-
action,
|
|
34
|
-
data,
|
|
35
|
-
author,
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
await jsonlHelper.appendJsonLine(memoryPath, entry)
|
|
39
|
-
} catch (error) {
|
|
40
|
-
// Non-critical - don't fail the command, but log unexpected errors
|
|
41
|
-
if (!isNotFoundError(error)) {
|
|
42
|
-
console.error(`Memory log error: ${getErrorMessage(error)}`)
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Get recent memory entries
|
|
49
|
-
*/
|
|
50
|
-
async getRecent(projectPath: string, limit: number = 100): Promise<MemoryServiceEntry[]> {
|
|
51
|
-
try {
|
|
52
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
53
|
-
if (!projectId) return []
|
|
54
|
-
|
|
55
|
-
const memoryPath = pathManager.getFilePath(projectId, 'memory', 'context.jsonl')
|
|
56
|
-
const entries = await jsonlHelper.readJsonLines<MemoryServiceEntry>(memoryPath)
|
|
57
|
-
return entries.slice(-limit)
|
|
58
|
-
} catch (error) {
|
|
59
|
-
// ENOENT or parse error - return empty (expected for new projects)
|
|
60
|
-
if (!isNotFoundError(error) && !(error instanceof SyntaxError)) {
|
|
61
|
-
console.error(`Memory read error: ${getErrorMessage(error)}`)
|
|
62
|
-
}
|
|
63
|
-
return []
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Search memory for entries matching a pattern
|
|
69
|
-
*/
|
|
70
|
-
async search(
|
|
71
|
-
projectPath: string,
|
|
72
|
-
pattern: string,
|
|
73
|
-
limit: number = 50
|
|
74
|
-
): Promise<MemoryServiceEntry[]> {
|
|
75
|
-
const entries = await this.getRecent(projectPath, 1000)
|
|
76
|
-
const patternLower = pattern.toLowerCase()
|
|
77
|
-
|
|
78
|
-
return entries
|
|
79
|
-
.filter((entry) => {
|
|
80
|
-
const actionMatch = entry.action.toLowerCase().includes(patternLower)
|
|
81
|
-
const dataMatch = JSON.stringify(entry.data).toLowerCase().includes(patternLower)
|
|
82
|
-
return actionMatch || dataMatch
|
|
83
|
-
})
|
|
84
|
-
.slice(-limit)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Get entries for a specific action type
|
|
89
|
-
*/
|
|
90
|
-
async getByAction(
|
|
91
|
-
projectPath: string,
|
|
92
|
-
action: string,
|
|
93
|
-
limit: number = 50
|
|
94
|
-
): Promise<MemoryServiceEntry[]> {
|
|
95
|
-
const entries = await this.getRecent(projectPath, 1000)
|
|
96
|
-
return entries.filter((entry) => entry.action === action).slice(-limit)
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Clear memory (for testing or cleanup)
|
|
101
|
-
*/
|
|
102
|
-
async clear(projectPath: string): Promise<void> {
|
|
103
|
-
try {
|
|
104
|
-
const projectId = await configManager.getProjectId(projectPath)
|
|
105
|
-
if (!projectId) return
|
|
106
|
-
|
|
107
|
-
const memoryPath = pathManager.getFilePath(projectId, 'memory', 'context.jsonl')
|
|
108
|
-
await jsonlHelper.writeJsonLines(memoryPath, [])
|
|
109
|
-
} catch (error) {
|
|
110
|
-
// Non-critical - but log unexpected errors
|
|
111
|
-
if (!isNotFoundError(error)) {
|
|
112
|
-
console.error(`Memory clear error: ${getErrorMessage(error)}`)
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Get recent events by projectId (for stats dashboard)
|
|
119
|
-
* @see PRJ-89
|
|
120
|
-
*/
|
|
121
|
-
async getRecentEvents(
|
|
122
|
-
projectId: string,
|
|
123
|
-
limit: number = 100
|
|
124
|
-
): Promise<Record<string, unknown>[]> {
|
|
125
|
-
try {
|
|
126
|
-
const memoryPath = pathManager.getFilePath(projectId, 'memory', 'context.jsonl')
|
|
127
|
-
const entries = await jsonlHelper.readJsonLines<Record<string, unknown>>(memoryPath)
|
|
128
|
-
return entries.slice(-limit)
|
|
129
|
-
} catch (error) {
|
|
130
|
-
// ENOENT or parse error - return empty
|
|
131
|
-
if (!isNotFoundError(error) && !(error instanceof SyntaxError)) {
|
|
132
|
-
console.error(`Memory read error: ${getErrorMessage(error)}`)
|
|
133
|
-
}
|
|
134
|
-
return []
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Cap memory log at max entries (PRJ-267).
|
|
140
|
-
* Moves overflow entries to archive table, keeps most recent entries.
|
|
141
|
-
* Returns count of archived entries.
|
|
142
|
-
*/
|
|
143
|
-
async capEntries(projectId: string): Promise<number> {
|
|
144
|
-
try {
|
|
145
|
-
const memoryPath = pathManager.getFilePath(projectId, 'memory', 'context.jsonl')
|
|
146
|
-
const entries = await jsonlHelper.readJsonLines<MemoryServiceEntry>(memoryPath)
|
|
147
|
-
|
|
148
|
-
if (entries.length <= ARCHIVE_POLICIES.MEMORY_MAX_ENTRIES) {
|
|
149
|
-
return 0
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const overflow = entries.slice(0, entries.length - ARCHIVE_POLICIES.MEMORY_MAX_ENTRIES)
|
|
153
|
-
const kept = entries.slice(-ARCHIVE_POLICIES.MEMORY_MAX_ENTRIES)
|
|
154
|
-
|
|
155
|
-
// Archive overflow entries in batch
|
|
156
|
-
archiveStorage.archiveMany(
|
|
157
|
-
projectId,
|
|
158
|
-
overflow.map((entry, i) => ({
|
|
159
|
-
entityType: 'memory_entry' as const,
|
|
160
|
-
entityId: `memory-${entry.timestamp || i}`,
|
|
161
|
-
entityData: entry,
|
|
162
|
-
summary: entry.action,
|
|
163
|
-
reason: 'overflow',
|
|
164
|
-
}))
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
// Rewrite file with only kept entries
|
|
168
|
-
await jsonlHelper.writeJsonLines(memoryPath, kept)
|
|
169
|
-
|
|
170
|
-
return overflow.length
|
|
171
|
-
} catch (error) {
|
|
172
|
-
if (!isNotFoundError(error)) {
|
|
173
|
-
console.error(`Memory cap error: ${getErrorMessage(error)}`)
|
|
174
|
-
}
|
|
175
|
-
return 0
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
export const memoryService = new MemoryService()
|
|
181
|
-
export default memoryService
|