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
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context Tools Types
|
|
3
|
-
*
|
|
4
|
-
* Shared interfaces for all context filtering tools.
|
|
5
|
-
* These tools are designed for AI agents to efficiently explore
|
|
6
|
-
* codebases WITHOUT consuming tokens for filtering.
|
|
7
|
-
*
|
|
8
|
-
* @module context-tools/types
|
|
9
|
-
* @version 1.0.0
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// =============================================================================
|
|
13
|
-
// Token Measurement Types
|
|
14
|
-
// =============================================================================
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Cost savings breakdown by model
|
|
18
|
-
*/
|
|
19
|
-
export interface CostBreakdown {
|
|
20
|
-
model: string
|
|
21
|
-
inputSaved: number // $ saved on input tokens
|
|
22
|
-
outputPotential: number // $ potential savings on output (estimated)
|
|
23
|
-
total: number // Combined savings
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Token measurement result
|
|
28
|
-
*/
|
|
29
|
-
export interface TokenMetrics {
|
|
30
|
-
tokens: {
|
|
31
|
-
original: number
|
|
32
|
-
filtered: number
|
|
33
|
-
saved: number
|
|
34
|
-
}
|
|
35
|
-
compression: number // 0-1 (e.g., 0.90 = 90% reduction)
|
|
36
|
-
cost: {
|
|
37
|
-
saved: number // $ saved (using default model)
|
|
38
|
-
formatted: string // Human-readable (e.g., "$0.02")
|
|
39
|
-
byModel: CostBreakdown[] // Breakdown by popular models
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// =============================================================================
|
|
44
|
-
// Files Tool Types
|
|
45
|
-
// =============================================================================
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Relevance score reasons
|
|
49
|
-
*/
|
|
50
|
-
export type ScoreReason =
|
|
51
|
-
| `keyword:${string}` // Matched keyword in path
|
|
52
|
-
| `domain:${string}` // Matched domain pattern
|
|
53
|
-
| `recent:${string}` // Recently modified (e.g., "3d" = 3 days)
|
|
54
|
-
| `import:${number}` // Import distance from entry point
|
|
55
|
-
| `extension:${string}` // File extension match
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* File with relevance score
|
|
59
|
-
*/
|
|
60
|
-
export interface ScoredFile {
|
|
61
|
-
path: string
|
|
62
|
-
score: number // 0-1
|
|
63
|
-
reasons: ScoreReason[]
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Files tool output
|
|
68
|
-
*/
|
|
69
|
-
export interface FilesToolOutput {
|
|
70
|
-
files: ScoredFile[]
|
|
71
|
-
metrics: {
|
|
72
|
-
filesScanned: number
|
|
73
|
-
filesReturned: number
|
|
74
|
-
scanDuration: number // ms
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// =============================================================================
|
|
79
|
-
// Signatures Tool Types
|
|
80
|
-
// =============================================================================
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Code signature types
|
|
84
|
-
*/
|
|
85
|
-
export type SignatureType =
|
|
86
|
-
| 'function'
|
|
87
|
-
| 'method'
|
|
88
|
-
| 'class'
|
|
89
|
-
| 'interface'
|
|
90
|
-
| 'type'
|
|
91
|
-
| 'enum'
|
|
92
|
-
| 'const'
|
|
93
|
-
| 'variable'
|
|
94
|
-
| 'export'
|
|
95
|
-
| 'import'
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Extracted code signature
|
|
99
|
-
*/
|
|
100
|
-
export interface CodeSignature {
|
|
101
|
-
type: SignatureType
|
|
102
|
-
name: string
|
|
103
|
-
signature: string // Full signature string (e.g., "(token: string) => Promise<User>")
|
|
104
|
-
exported: boolean
|
|
105
|
-
line: number
|
|
106
|
-
docstring?: string
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Signatures tool output
|
|
111
|
-
*/
|
|
112
|
-
export interface SignaturesToolOutput {
|
|
113
|
-
file: string
|
|
114
|
-
language: string
|
|
115
|
-
signatures: CodeSignature[]
|
|
116
|
-
fallback: boolean // True if full file was returned (no grammar)
|
|
117
|
-
fallbackReason?: string
|
|
118
|
-
metrics: TokenMetrics
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// =============================================================================
|
|
122
|
-
// Imports Tool Types
|
|
123
|
-
// =============================================================================
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Import relationship
|
|
127
|
-
*/
|
|
128
|
-
export interface ImportRelation {
|
|
129
|
-
source: string // Import path (e.g., "./types", "lodash")
|
|
130
|
-
resolved: string | null // Resolved file path (null for external)
|
|
131
|
-
isExternal: boolean
|
|
132
|
-
importedNames?: string[] // Named imports
|
|
133
|
-
isDefault?: boolean
|
|
134
|
-
isNamespace?: boolean // import * as X
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* File that imports the target
|
|
139
|
-
*/
|
|
140
|
-
export interface ImportedBy {
|
|
141
|
-
file: string
|
|
142
|
-
importedNames?: string[]
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Dependency tree node
|
|
147
|
-
*/
|
|
148
|
-
export interface DependencyNode {
|
|
149
|
-
file: string
|
|
150
|
-
imports: DependencyNode[]
|
|
151
|
-
depth: number
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Imports tool output
|
|
156
|
-
*/
|
|
157
|
-
export interface ImportsToolOutput {
|
|
158
|
-
file: string
|
|
159
|
-
imports: ImportRelation[]
|
|
160
|
-
importedBy: ImportedBy[]
|
|
161
|
-
dependencyTree?: DependencyNode
|
|
162
|
-
metrics: {
|
|
163
|
-
totalImports: number
|
|
164
|
-
externalImports: number
|
|
165
|
-
internalImports: number
|
|
166
|
-
importedByCount: number
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// =============================================================================
|
|
171
|
-
// Recent Tool Types
|
|
172
|
-
// =============================================================================
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Hot file from git analysis
|
|
176
|
-
*/
|
|
177
|
-
export interface HotFile {
|
|
178
|
-
path: string
|
|
179
|
-
changes: number // Number of commits touching this file
|
|
180
|
-
heatScore: number // 0-1 normalized score
|
|
181
|
-
lastChanged: string // Human-readable (e.g., "2h ago", "3d ago")
|
|
182
|
-
lastChangedAt: string // ISO timestamp
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Recent tool output
|
|
187
|
-
*/
|
|
188
|
-
export interface RecentToolOutput {
|
|
189
|
-
hotFiles: HotFile[]
|
|
190
|
-
branchOnlyFiles: string[] // Files only changed in current branch
|
|
191
|
-
metrics: {
|
|
192
|
-
commitsAnalyzed: number
|
|
193
|
-
totalFilesChanged: number
|
|
194
|
-
filesReturned: number
|
|
195
|
-
analysisWindow: string // e.g., "30 commits", "main..HEAD"
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// =============================================================================
|
|
200
|
-
// Summary Tool Types
|
|
201
|
-
// =============================================================================
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Public API entry
|
|
205
|
-
*/
|
|
206
|
-
export interface PublicAPIEntry {
|
|
207
|
-
name: string
|
|
208
|
-
type: SignatureType
|
|
209
|
-
signature: string
|
|
210
|
-
description?: string // From JSDoc/docstring
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Summary tool output
|
|
215
|
-
*/
|
|
216
|
-
export interface SummaryToolOutput {
|
|
217
|
-
file: string
|
|
218
|
-
purpose: string // Short description of file purpose
|
|
219
|
-
publicAPI: PublicAPIEntry[]
|
|
220
|
-
dependencies: string[] // Key dependencies
|
|
221
|
-
metrics: TokenMetrics
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// =============================================================================
|
|
225
|
-
// Context Tool Usage Tracking
|
|
226
|
-
// =============================================================================
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Tool usage record for metrics
|
|
230
|
-
*/
|
|
231
|
-
export interface ContextToolUsage {
|
|
232
|
-
tool: 'files' | 'signatures' | 'imports' | 'recent' | 'summary'
|
|
233
|
-
timestamp: string
|
|
234
|
-
inputArgs: string
|
|
235
|
-
tokensSaved: number
|
|
236
|
-
compressionRate: number
|
|
237
|
-
duration: number // ms
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// =============================================================================
|
|
241
|
-
// Main Tool Result Type
|
|
242
|
-
// =============================================================================
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Union type for all tool outputs
|
|
246
|
-
*/
|
|
247
|
-
export type ContextToolOutput =
|
|
248
|
-
| { tool: 'files'; result: FilesToolOutput }
|
|
249
|
-
| { tool: 'signatures'; result: SignaturesToolOutput }
|
|
250
|
-
| { tool: 'imports'; result: ImportsToolOutput }
|
|
251
|
-
| { tool: 'recent'; result: RecentToolOutput }
|
|
252
|
-
| { tool: 'summary'; result: SummaryToolOutput }
|
|
253
|
-
| { tool: 'error'; result: { error: string; code: string } }
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgentGenerator - Universal Dynamic Agent Generation
|
|
3
|
-
* Optimized for minimal context usage
|
|
4
|
-
* @version 1.0.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import fs from 'node:fs/promises'
|
|
8
|
-
import os from 'node:os'
|
|
9
|
-
import path from 'node:path'
|
|
10
|
-
import { getErrorMessage } from '../types/fs'
|
|
11
|
-
import log from '../utils/logger'
|
|
12
|
-
import AgentLoader from './agent-loader'
|
|
13
|
-
|
|
14
|
-
interface AgentConfig {
|
|
15
|
-
role?: string
|
|
16
|
-
domain?: string
|
|
17
|
-
projectContext?: Record<string, unknown> | string
|
|
18
|
-
expertise?: string
|
|
19
|
-
contextFilter?: string
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// TechSummary and GenerateContext interfaces REMOVED.
|
|
23
|
-
// Agent generation is AGENTIC - Claude reads raw data and decides.
|
|
24
|
-
|
|
25
|
-
interface Agent {
|
|
26
|
-
name: string
|
|
27
|
-
content?: string
|
|
28
|
-
path?: string
|
|
29
|
-
role?: string | null
|
|
30
|
-
domain?: string
|
|
31
|
-
skills?: string[]
|
|
32
|
-
modified?: Date
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
class AgentGenerator {
|
|
36
|
-
projectId: string | null
|
|
37
|
-
outputDir: string
|
|
38
|
-
loader: AgentLoader
|
|
39
|
-
|
|
40
|
-
constructor(projectId: string | null = null) {
|
|
41
|
-
this.projectId = projectId
|
|
42
|
-
// Write to agents/ for MD storage (matches AgentLoader)
|
|
43
|
-
this.outputDir = projectId
|
|
44
|
-
? path.join(os.homedir(), '.prjct-cli', 'projects', projectId, 'agents')
|
|
45
|
-
: path.join(os.homedir(), '.prjct-cli', 'agents')
|
|
46
|
-
this.loader = new AgentLoader(projectId)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Generate specialized agent with deep expertise
|
|
51
|
-
* Universal - works with ANY technology stack
|
|
52
|
-
* Writes JSON to data/agents/{name}.json
|
|
53
|
-
*/
|
|
54
|
-
async generateDynamicAgent(agentName: string, config: AgentConfig): Promise<{ name: string }> {
|
|
55
|
-
log.debug(`Generating ${agentName} agent...`)
|
|
56
|
-
await fs.mkdir(this.outputDir, { recursive: true })
|
|
57
|
-
|
|
58
|
-
// Write as MD (matches AgentLoader which reads .md files)
|
|
59
|
-
const content = this.buildAgentPrompt(agentName, config)
|
|
60
|
-
const outputPath = path.join(this.outputDir, `${agentName}.md`)
|
|
61
|
-
await fs.writeFile(outputPath, content, 'utf-8')
|
|
62
|
-
log.debug(`${agentName} agent created`)
|
|
63
|
-
|
|
64
|
-
return { name: agentName }
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// NOTE: generateAgentsFromTech() was REMOVED intentionally.
|
|
68
|
-
// Agent generation is AGENTIC - Claude reads analysis/repo-summary.md
|
|
69
|
-
// and DECIDES what specialists to create by calling generateDynamicAgent().
|
|
70
|
-
// DO NOT add any automatic agent generation logic here.
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Build comprehensive agent prompt
|
|
74
|
-
*/
|
|
75
|
-
buildAgentPrompt(agentName: string, config: AgentConfig): string {
|
|
76
|
-
const domain = config.domain || 'general'
|
|
77
|
-
|
|
78
|
-
const projectContext =
|
|
79
|
-
typeof config.projectContext === 'object'
|
|
80
|
-
? JSON.stringify(config.projectContext || {}, null, 2)
|
|
81
|
-
: config.projectContext || 'No specific project context provided.'
|
|
82
|
-
|
|
83
|
-
return `# AGENT: ${agentName.toUpperCase()}
|
|
84
|
-
Role: ${config.role || agentName}
|
|
85
|
-
|
|
86
|
-
## META-INSTRUCTION
|
|
87
|
-
You are an intelligent agent responsible for this domain.
|
|
88
|
-
Your first task is to ANALYZE the provided PROJECT CONTEXT to determine:
|
|
89
|
-
1. The technology stack being used.
|
|
90
|
-
2. The architectural patterns in place.
|
|
91
|
-
3. The specific best practices relevant to this stack.
|
|
92
|
-
|
|
93
|
-
## DOMAIN AUTHORITY
|
|
94
|
-
You are the owner of the ${domain} domain.
|
|
95
|
-
You have full authority to make technical decisions within this scope.
|
|
96
|
-
|
|
97
|
-
## DYNAMIC STANDARDS
|
|
98
|
-
Instead of following a hardcoded list, you must:
|
|
99
|
-
- **DETECT**: Identify the languages, frameworks, and tools from the file extensions and content.
|
|
100
|
-
- **ADAPT**: Adopt the persona of a Senior Engineer specializing in the detected stack.
|
|
101
|
-
- **ENFORCE**: Apply the idiomatic best practices, naming conventions, and patterns of that stack.
|
|
102
|
-
|
|
103
|
-
## ORCHESTRATION PROTOCOL
|
|
104
|
-
1. **ANALYZE**: Read the context. Determine the stack.
|
|
105
|
-
2. **PLAN**: Create a plan that fits the detected architecture.
|
|
106
|
-
3. **EXECUTE**: Implement using the detected tools and patterns.
|
|
107
|
-
4. **VERIFY**: Ensure code matches the project's existing style.
|
|
108
|
-
|
|
109
|
-
## PROJECT CONTEXT
|
|
110
|
-
${projectContext}
|
|
111
|
-
|
|
112
|
-
## CONTEXT FOCUS
|
|
113
|
-
${config.contextFilter || 'Only relevant files'}
|
|
114
|
-
|
|
115
|
-
## RULES
|
|
116
|
-
- Stay in your domain (${domain})
|
|
117
|
-
- Do not assume a specific stack until you see the code.
|
|
118
|
-
- Optimize for production.
|
|
119
|
-
- No explanations unless asked.
|
|
120
|
-
`
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Remove agents that are no longer needed
|
|
125
|
-
*/
|
|
126
|
-
async cleanupObsoleteAgents(requiredAgents: string[]): Promise<string[]> {
|
|
127
|
-
const removed: string[] = []
|
|
128
|
-
|
|
129
|
-
try {
|
|
130
|
-
const files = await fs.readdir(this.outputDir)
|
|
131
|
-
const agentFiles = files.filter((f) => f.endsWith('.md') && !f.startsWith('.'))
|
|
132
|
-
|
|
133
|
-
for (const file of agentFiles) {
|
|
134
|
-
const type = file.replace('.md', '')
|
|
135
|
-
|
|
136
|
-
if (!requiredAgents.includes(type)) {
|
|
137
|
-
const filePath = path.join(this.outputDir, file)
|
|
138
|
-
await fs.unlink(filePath)
|
|
139
|
-
removed.push(type)
|
|
140
|
-
log.debug(`${type} agent removed`)
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
} catch (error) {
|
|
144
|
-
log.error('Agent cleanup failed:', getErrorMessage(error))
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return removed
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* List all existing agents
|
|
152
|
-
*/
|
|
153
|
-
async listAgents(): Promise<string[]> {
|
|
154
|
-
try {
|
|
155
|
-
const files = await fs.readdir(this.outputDir)
|
|
156
|
-
return files
|
|
157
|
-
.filter((f) => f.endsWith('.md') && !f.startsWith('.'))
|
|
158
|
-
.map((f) => f.replace('.md', ''))
|
|
159
|
-
} catch (_error) {
|
|
160
|
-
return []
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Load an agent from its file
|
|
166
|
-
*/
|
|
167
|
-
async loadAgent(agentName: string): Promise<Agent | null> {
|
|
168
|
-
return await this.loader.loadAgent(agentName)
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Load all agents for the project
|
|
173
|
-
*/
|
|
174
|
-
async loadAllAgents(): Promise<Agent[]> {
|
|
175
|
-
return await this.loader.loadAllAgents()
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Check if an agent exists
|
|
180
|
-
*/
|
|
181
|
-
async agentExists(agentName: string): Promise<boolean> {
|
|
182
|
-
return await this.loader.agentExists(agentName)
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export default AgentGenerator
|