prjct-cli 1.22.0 → 1.23.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 +147 -0
- package/bin/prjct +30 -13
- package/dist/bin/prjct.mjs +917 -35845
- package/dist/bin/prjct.mjs.map +7 -0
- package/dist/cli/linear.mjs +16 -0
- package/dist/cli/linear.mjs.map +7 -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,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Response Validator
|
|
3
|
-
*
|
|
4
|
-
* Validates LLM responses against Zod schemas.
|
|
5
|
-
* Provides structured error handling with re-prompt support.
|
|
6
|
-
*
|
|
7
|
-
* Flow:
|
|
8
|
-
* 1. Parse raw text as JSON
|
|
9
|
-
* 2. Validate against Zod schema
|
|
10
|
-
* 3. On success: return typed data
|
|
11
|
-
* 4. On failure: return validation errors for re-prompt or fallback
|
|
12
|
-
*
|
|
13
|
-
* @see PRJ-264
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import type { z } from 'zod'
|
|
17
|
-
|
|
18
|
-
// =============================================================================
|
|
19
|
-
// Types
|
|
20
|
-
// =============================================================================
|
|
21
|
-
|
|
22
|
-
export interface ValidationSuccess<T> {
|
|
23
|
-
success: true
|
|
24
|
-
data: T
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface ValidationFailure {
|
|
28
|
-
success: false
|
|
29
|
-
error: string
|
|
30
|
-
/** Raw parsed JSON (may be partial) */
|
|
31
|
-
rawParsed: unknown
|
|
32
|
-
/** Zod validation issues */
|
|
33
|
-
issues: string[]
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export type ValidationResult<T> = ValidationSuccess<T> | ValidationFailure
|
|
37
|
-
|
|
38
|
-
// =============================================================================
|
|
39
|
-
// Core Validation
|
|
40
|
-
// =============================================================================
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Validate a raw LLM response string against a Zod schema.
|
|
44
|
-
*
|
|
45
|
-
* Handles:
|
|
46
|
-
* - JSON parse errors (LLM returned non-JSON)
|
|
47
|
-
* - Markdown-wrapped JSON (```json ... ```)
|
|
48
|
-
* - Schema validation errors (wrong fields, types)
|
|
49
|
-
*/
|
|
50
|
-
export function validateLLMResponse<T>(raw: string, schema: z.ZodType<T>): ValidationResult<T> {
|
|
51
|
-
// Strip markdown code fences if present
|
|
52
|
-
let jsonText = raw.trim()
|
|
53
|
-
const fenceMatch = jsonText.match(/^```(?:json)?\s*\n?([\s\S]*?)\n?\s*```$/)
|
|
54
|
-
if (fenceMatch) {
|
|
55
|
-
jsonText = fenceMatch[1].trim()
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Attempt JSON parse
|
|
59
|
-
let parsed: unknown
|
|
60
|
-
try {
|
|
61
|
-
parsed = JSON.parse(jsonText)
|
|
62
|
-
} catch {
|
|
63
|
-
return {
|
|
64
|
-
success: false,
|
|
65
|
-
error: 'Response is not valid JSON',
|
|
66
|
-
rawParsed: null,
|
|
67
|
-
issues: [`JSON parse error: expected JSON, got: ${jsonText.slice(0, 100)}...`],
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Validate against schema
|
|
72
|
-
const result = schema.safeParse(parsed)
|
|
73
|
-
if (result.success) {
|
|
74
|
-
return { success: true, data: result.data }
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Extract readable error messages
|
|
78
|
-
const issues = result.error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`)
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
success: false,
|
|
82
|
-
error: `Schema validation failed: ${issues.join('; ')}`,
|
|
83
|
-
rawParsed: parsed,
|
|
84
|
-
issues,
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Build a re-prompt message when validation fails.
|
|
90
|
-
* Includes the original error so the LLM can fix its response.
|
|
91
|
-
*/
|
|
92
|
-
export function buildReprompt(failure: ValidationFailure, schemaExample: string): string {
|
|
93
|
-
return `Your previous response was not valid. Errors:
|
|
94
|
-
${failure.issues.map((i) => `- ${i}`).join('\n')}
|
|
95
|
-
|
|
96
|
-
Return ONLY valid JSON matching this exact format (no markdown, no explanation):
|
|
97
|
-
${schemaExample}`
|
|
98
|
-
}
|
package/core/agentic/services.ts
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agentic Services Facade
|
|
3
|
-
*
|
|
4
|
-
* Single entry point for all agentic subsystems.
|
|
5
|
-
* Use this facade instead of importing individual modules.
|
|
6
|
-
*
|
|
7
|
-
* This reduces the number of imports Claude needs to understand
|
|
8
|
-
* and provides a clear API for the agentic system.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import { services } from './services'
|
|
13
|
-
*
|
|
14
|
-
* // Instead of:
|
|
15
|
-
* import * as templateLoader from './template-loader'
|
|
16
|
-
* import contextBuilder from './context-builder'
|
|
17
|
-
* // ... 12 more imports
|
|
18
|
-
*
|
|
19
|
-
* // Use:
|
|
20
|
-
* const template = await services.templates.load('now')
|
|
21
|
-
* const context = await services.context.build(projectPath)
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
import { outcomeAnalyzer, outcomeRecorder } from '../outcomes'
|
|
26
|
-
import { ideasStorage, queueStorage, shippedStorage, stateStorage } from '../storage'
|
|
27
|
-
import agentRouter from './agent-router'
|
|
28
|
-
import chainOfThought from './chain-of-thought'
|
|
29
|
-
import contextBuilder from './context-builder'
|
|
30
|
-
import groundTruth from './ground-truth'
|
|
31
|
-
import loopDetector from './loop-detector'
|
|
32
|
-
import memorySystem from './memory-system'
|
|
33
|
-
import planMode from './plan-mode'
|
|
34
|
-
import promptBuilder from './prompt-builder'
|
|
35
|
-
import smartContext from './smart-context'
|
|
36
|
-
import templateLoader from './template-loader'
|
|
37
|
-
import toolRegistry from './tool-registry'
|
|
38
|
-
|
|
39
|
-
// Storage managers object (replaces mdManagers)
|
|
40
|
-
const storageManagers = {
|
|
41
|
-
state: stateStorage,
|
|
42
|
-
queue: queueStorage,
|
|
43
|
-
ideas: ideasStorage,
|
|
44
|
-
shipped: shippedStorage,
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
import { agentPerformanceTracker } from '../agents'
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Agentic services interface.
|
|
51
|
-
* Each property provides access to a subsystem.
|
|
52
|
-
*/
|
|
53
|
-
export interface AgenticServices {
|
|
54
|
-
/**
|
|
55
|
-
* Template loader - loads command templates from templates/
|
|
56
|
-
* @see templateLoader
|
|
57
|
-
*/
|
|
58
|
-
templates: typeof templateLoader
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Context builder - builds ProjectContext for commands
|
|
62
|
-
* @see contextBuilder
|
|
63
|
-
*/
|
|
64
|
-
context: typeof contextBuilder
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Prompt builder - generates prompts from templates and context
|
|
68
|
-
* @see promptBuilder
|
|
69
|
-
*/
|
|
70
|
-
prompts: typeof promptBuilder
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Tool registry - registers and executes tools (Read, Write, Bash, etc.)
|
|
74
|
-
* @see toolRegistry
|
|
75
|
-
*/
|
|
76
|
-
tools: typeof toolRegistry
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Loop detector - detects and prevents infinite loops
|
|
80
|
-
* @see loopDetector
|
|
81
|
-
*/
|
|
82
|
-
loops: typeof loopDetector
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Memory system - stores and retrieves learned patterns
|
|
86
|
-
* @see memorySystem
|
|
87
|
-
*/
|
|
88
|
-
memory: typeof memorySystem
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Ground truth - verifies command preconditions
|
|
92
|
-
* @see groundTruth
|
|
93
|
-
*/
|
|
94
|
-
truth: typeof groundTruth
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Chain of thought - adds reasoning to responses
|
|
98
|
-
* @see chainOfThought
|
|
99
|
-
*/
|
|
100
|
-
reasoning: typeof chainOfThought
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Plan mode - handles planning workflow
|
|
104
|
-
* @see planMode
|
|
105
|
-
*/
|
|
106
|
-
planning: typeof planMode
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Agent router - routes tasks to appropriate agents
|
|
110
|
-
* @see agentRouter
|
|
111
|
-
*/
|
|
112
|
-
router: typeof agentRouter
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Smart context - intelligent context filtering by task type
|
|
116
|
-
* @see smartContext
|
|
117
|
-
*/
|
|
118
|
-
smartContext: typeof smartContext
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Storage managers - Write-through state management
|
|
122
|
-
* @see storageManagers
|
|
123
|
-
*/
|
|
124
|
-
data: typeof storageManagers
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Outcome recorder - records execution outcomes
|
|
128
|
-
* @see outcomeRecorder
|
|
129
|
-
*/
|
|
130
|
-
outcomes: typeof outcomeRecorder
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Outcome analyzer - analyzes outcomes for patterns
|
|
134
|
-
* @see outcomeAnalyzer
|
|
135
|
-
*/
|
|
136
|
-
outcomeAnalysis: typeof outcomeAnalyzer
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Agent performance tracker - tracks agent performance
|
|
140
|
-
* @see agentPerformanceTracker
|
|
141
|
-
*/
|
|
142
|
-
agentPerformance: typeof agentPerformanceTracker
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Singleton services instance.
|
|
147
|
-
* Import and use this instead of individual module imports.
|
|
148
|
-
*/
|
|
149
|
-
export const services: AgenticServices = {
|
|
150
|
-
templates: templateLoader,
|
|
151
|
-
context: contextBuilder,
|
|
152
|
-
prompts: promptBuilder,
|
|
153
|
-
tools: toolRegistry,
|
|
154
|
-
loops: loopDetector,
|
|
155
|
-
memory: memorySystem,
|
|
156
|
-
truth: groundTruth,
|
|
157
|
-
reasoning: chainOfThought,
|
|
158
|
-
planning: planMode,
|
|
159
|
-
router: agentRouter,
|
|
160
|
-
smartContext: smartContext,
|
|
161
|
-
data: storageManagers,
|
|
162
|
-
outcomes: outcomeRecorder,
|
|
163
|
-
outcomeAnalysis: outcomeAnalyzer,
|
|
164
|
-
agentPerformance: agentPerformanceTracker,
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export default services
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Loader for Agentic System
|
|
3
|
-
*
|
|
4
|
-
* Integrates skills into the prompt builder and context system.
|
|
5
|
-
* Formats skills for Claude consumption.
|
|
6
|
-
*
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import skillService from '../services/skill-service'
|
|
11
|
-
import type { FormattedSkill, Skill, SkillContext } from '../types'
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Format a skill for inclusion in prompts
|
|
15
|
-
*/
|
|
16
|
-
function formatSkillForPrompt(skill: Skill): FormattedSkill {
|
|
17
|
-
return {
|
|
18
|
-
id: skill.id,
|
|
19
|
-
name: skill.name,
|
|
20
|
-
description: skill.description,
|
|
21
|
-
prompt: skill.content,
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Generate markdown listing of available skills
|
|
27
|
-
*/
|
|
28
|
-
function generateSkillsMarkdown(skills: Skill[]): string {
|
|
29
|
-
if (skills.length === 0) {
|
|
30
|
-
return ''
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const lines: string[] = ['## Available Skills', '', 'The following skills can be invoked:', '']
|
|
34
|
-
|
|
35
|
-
for (const skill of skills) {
|
|
36
|
-
lines.push(`- **${skill.name}** (\`${skill.id}\`): ${skill.description || 'No description'}`)
|
|
37
|
-
if (skill.metadata.agent) {
|
|
38
|
-
lines.push(` - Agent: ${skill.metadata.agent}`)
|
|
39
|
-
}
|
|
40
|
-
if (skill.metadata.tags?.length) {
|
|
41
|
-
lines.push(` - Tags: ${skill.metadata.tags.join(', ')}`)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return lines.join('\n')
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Load skills and prepare context for prompts
|
|
50
|
-
*/
|
|
51
|
-
export async function loadSkillContext(projectPath?: string): Promise<SkillContext> {
|
|
52
|
-
const skills = await skillService.getAll(projectPath)
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
availableSkills: skills.map(formatSkillForPrompt),
|
|
56
|
-
skillsMarkdown: generateSkillsMarkdown(skills),
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Get a specific skill's prompt content
|
|
62
|
-
*/
|
|
63
|
-
export async function getSkillPrompt(
|
|
64
|
-
skillId: string,
|
|
65
|
-
projectPath?: string
|
|
66
|
-
): Promise<string | null> {
|
|
67
|
-
const skill = await skillService.get(skillId, projectPath)
|
|
68
|
-
return skill?.content || null
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Find best matching skill for a query
|
|
73
|
-
*/
|
|
74
|
-
export async function findBestSkill(query: string, projectPath?: string): Promise<Skill | null> {
|
|
75
|
-
const results = await skillService.search(query, projectPath)
|
|
76
|
-
return results[0]?.skill || null
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Format skill invocation result
|
|
81
|
-
*/
|
|
82
|
-
export function formatSkillResult(skill: Skill, result: string): string {
|
|
83
|
-
return [
|
|
84
|
-
`## Skill Executed: ${skill.name}`,
|
|
85
|
-
'',
|
|
86
|
-
result,
|
|
87
|
-
'',
|
|
88
|
-
`---`,
|
|
89
|
-
`*Skill: ${skill.id} | Source: ${skill.source}*`,
|
|
90
|
-
].join('\n')
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Build skill section for system prompt
|
|
95
|
-
*/
|
|
96
|
-
export async function buildSkillSystemPrompt(projectPath?: string): Promise<string> {
|
|
97
|
-
const { availableSkills, skillsMarkdown } = await loadSkillContext(projectPath)
|
|
98
|
-
|
|
99
|
-
if (availableSkills.length === 0) {
|
|
100
|
-
return ''
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return ['<skills>', skillsMarkdown, '', 'To invoke a skill, use the skill ID.', '</skills>'].join(
|
|
104
|
-
'\n'
|
|
105
|
-
)
|
|
106
|
-
}
|