prjct-cli 0.11.4 → 0.12.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 +72 -0
- package/README.md +81 -25
- package/bin/dev.js +1 -1
- package/bin/generate-views.js +209 -0
- package/bin/migrate-to-json.js +742 -0
- package/bin/prjct +5 -5
- package/bin/serve.js +246 -54
- package/core/__tests__/agentic/{memory-system.test.js → memory-system.test.ts} +12 -23
- package/core/__tests__/agentic/{plan-mode.test.js → plan-mode.test.ts} +26 -24
- package/core/__tests__/agentic/{prompt-builder.test.js → prompt-builder.test.ts} +3 -8
- package/core/__tests__/utils/date-helper.test.ts +405 -0
- package/core/__tests__/utils/{output.test.js → output.test.ts} +12 -24
- package/core/agentic/agent-router.ts +137 -0
- package/core/agentic/chain-of-thought.ts +228 -0
- package/core/agentic/command-executor/command-executor.ts +384 -0
- package/core/agentic/command-executor/index.ts +16 -0
- package/core/agentic/command-executor/status-signal.ts +38 -0
- package/core/agentic/command-executor/types.ts +79 -0
- package/core/agentic/command-executor.ts +8 -0
- package/core/agentic/{context-builder.js → context-builder.ts} +99 -89
- package/core/agentic/context-filter.ts +365 -0
- package/core/agentic/ground-truth/index.ts +76 -0
- package/core/agentic/ground-truth/types.ts +33 -0
- package/core/agentic/ground-truth/utils.ts +48 -0
- package/core/agentic/ground-truth/verifiers/analyze.ts +54 -0
- package/core/agentic/ground-truth/verifiers/done.ts +75 -0
- package/core/agentic/ground-truth/verifiers/feature.ts +70 -0
- package/core/agentic/ground-truth/verifiers/index.ts +37 -0
- package/core/agentic/ground-truth/verifiers/init.ts +52 -0
- package/core/agentic/ground-truth/verifiers/now.ts +57 -0
- package/core/agentic/ground-truth/verifiers/ship.ts +85 -0
- package/core/agentic/ground-truth/verifiers/spec.ts +45 -0
- package/core/agentic/ground-truth/verifiers/sync.ts +47 -0
- package/core/agentic/ground-truth/verifiers.ts +6 -0
- package/core/agentic/ground-truth.ts +8 -0
- package/core/agentic/loop-detector/error-analysis.ts +97 -0
- package/core/agentic/loop-detector/hallucination.ts +71 -0
- package/core/agentic/loop-detector/index.ts +41 -0
- package/core/agentic/loop-detector/loop-detector.ts +222 -0
- package/core/agentic/loop-detector/types.ts +66 -0
- package/core/agentic/loop-detector.ts +8 -0
- package/core/agentic/memory-system/history.ts +53 -0
- package/core/agentic/memory-system/index.ts +192 -0
- package/core/agentic/memory-system/patterns.ts +156 -0
- package/core/agentic/memory-system/semantic-memories.ts +277 -0
- package/core/agentic/memory-system/session.ts +21 -0
- package/core/agentic/memory-system/types.ts +159 -0
- package/core/agentic/memory-system.ts +8 -0
- package/core/agentic/parallel-tools.ts +165 -0
- package/core/agentic/plan-mode/approval.ts +57 -0
- package/core/agentic/plan-mode/constants.ts +44 -0
- package/core/agentic/plan-mode/index.ts +28 -0
- package/core/agentic/plan-mode/plan-mode.ts +406 -0
- package/core/agentic/plan-mode/types.ts +193 -0
- package/core/agentic/plan-mode.ts +8 -0
- package/core/agentic/prompt-builder.ts +566 -0
- package/core/agentic/response-templates.ts +164 -0
- package/core/agentic/semantic-compression.ts +273 -0
- package/core/agentic/services.ts +206 -0
- package/core/agentic/smart-context.ts +476 -0
- package/core/agentic/{template-loader.js → template-loader.ts} +35 -18
- package/core/agentic/think-blocks.ts +202 -0
- package/core/agentic/tool-registry.ts +119 -0
- package/core/agentic/validation-rules.ts +313 -0
- package/core/agents/index.ts +28 -0
- package/core/agents/performance.ts +444 -0
- package/core/agents/types.ts +126 -0
- package/core/bus/{index.js → index.ts} +57 -61
- package/core/command-registry/categories.ts +23 -0
- package/core/command-registry/commands.ts +15 -0
- package/core/command-registry/core-commands.ts +319 -0
- package/core/command-registry/index.ts +158 -0
- package/core/command-registry/optional-commands.ts +119 -0
- package/core/command-registry/setup-commands.ts +53 -0
- package/core/command-registry/types.ts +59 -0
- package/core/command-registry.ts +9 -0
- package/core/commands/analysis.ts +298 -0
- package/core/commands/analytics.ts +288 -0
- package/core/commands/base.ts +273 -0
- package/core/commands/index.ts +211 -0
- package/core/commands/maintenance.ts +226 -0
- package/core/commands/planning.ts +311 -0
- package/core/commands/setup.ts +309 -0
- package/core/commands/shipping.ts +188 -0
- package/core/commands/types.ts +183 -0
- package/core/commands/workflow.ts +226 -0
- package/core/commands.ts +11 -0
- package/core/constants/formats.ts +187 -0
- package/core/constants/index.ts +7 -0
- package/core/{context-sync.js → context-sync.ts} +59 -26
- package/core/data/agents-manager.ts +76 -0
- package/core/data/analysis-manager.ts +83 -0
- package/core/data/base-manager.ts +156 -0
- package/core/data/ideas-manager.ts +81 -0
- package/core/data/index.ts +32 -0
- package/core/data/outcomes-manager.ts +96 -0
- package/core/data/project-manager.ts +75 -0
- package/core/data/roadmap-manager.ts +118 -0
- package/core/data/shipped-manager.ts +65 -0
- package/core/data/state-manager.ts +214 -0
- package/core/domain/{agent-generator.js → agent-generator.ts} +77 -57
- package/core/domain/{agent-loader.js → agent-loader.ts} +65 -56
- package/core/domain/{agent-matcher.js → agent-matcher.ts} +51 -24
- package/core/domain/{agent-validator.js → agent-validator.ts} +70 -37
- package/core/domain/{analyzer.js → analyzer.ts} +91 -85
- package/core/domain/{architect-session.js → architect-session.ts} +49 -34
- package/core/domain/{architecture-generator.js → architecture-generator.ts} +25 -13
- package/core/domain/{context-estimator.js → context-estimator.ts} +57 -36
- package/core/domain/{product-standards.js → product-standards.ts} +40 -26
- package/core/domain/{smart-cache.js → smart-cache.ts} +39 -30
- package/core/domain/{snapshot-manager.js → snapshot-manager.ts} +103 -100
- package/core/domain/{task-analyzer.js → task-analyzer.ts} +82 -43
- package/core/domain/task-stack/index.ts +19 -0
- package/core/domain/task-stack/parser.ts +86 -0
- package/core/domain/task-stack/storage.ts +123 -0
- package/core/domain/task-stack/task-stack.ts +340 -0
- package/core/domain/task-stack/types.ts +51 -0
- package/core/domain/task-stack.ts +8 -0
- package/core/{index.js → index.ts} +61 -18
- package/core/infrastructure/{agent-detector.js → agent-detector.ts} +62 -23
- package/core/infrastructure/agents/{claude-agent.js → claude-agent.ts} +61 -21
- package/core/infrastructure/{author-detector.js → author-detector.ts} +42 -49
- package/core/infrastructure/{capability-installer.js → capability-installer.ts} +51 -27
- package/core/infrastructure/{command-installer.js → command-installer/command-installer.ts} +43 -144
- package/core/infrastructure/command-installer/global-config.ts +106 -0
- package/core/infrastructure/command-installer/index.ts +25 -0
- package/core/infrastructure/command-installer/types.ts +41 -0
- package/core/infrastructure/command-installer.ts +8 -0
- package/core/infrastructure/{config-manager.js → config-manager.ts} +60 -80
- package/core/infrastructure/{editors-config.js → editors-config.ts} +33 -31
- package/core/infrastructure/legacy-installer-detector/cleanup.ts +216 -0
- package/core/infrastructure/legacy-installer-detector/detection.ts +95 -0
- package/core/infrastructure/legacy-installer-detector/index.ts +171 -0
- package/core/infrastructure/legacy-installer-detector/migration.ts +87 -0
- package/core/infrastructure/legacy-installer-detector/types.ts +42 -0
- package/core/infrastructure/legacy-installer-detector.ts +7 -0
- package/core/infrastructure/migrator/file-operations.ts +125 -0
- package/core/infrastructure/migrator/index.ts +288 -0
- package/core/infrastructure/migrator/project-scanner.ts +89 -0
- package/core/infrastructure/migrator/reports.ts +117 -0
- package/core/infrastructure/migrator/types.ts +124 -0
- package/core/infrastructure/migrator/validation.ts +94 -0
- package/core/infrastructure/migrator/version-migration.ts +117 -0
- package/core/infrastructure/migrator.ts +10 -0
- package/core/infrastructure/{path-manager.js → path-manager.ts} +51 -91
- package/core/infrastructure/session-manager/index.ts +23 -0
- package/core/infrastructure/session-manager/migration.ts +88 -0
- package/core/infrastructure/session-manager/session-manager.ts +307 -0
- package/core/infrastructure/session-manager/types.ts +45 -0
- package/core/infrastructure/session-manager.ts +8 -0
- package/core/infrastructure/{setup.js → setup.ts} +29 -21
- package/core/infrastructure/{update-checker.js → update-checker.ts} +40 -18
- package/core/outcomes/analyzer.ts +333 -0
- package/core/outcomes/index.ts +34 -0
- package/core/outcomes/recorder.ts +194 -0
- package/core/outcomes/types.ts +145 -0
- package/core/plugin/{hooks.js → hooks.ts} +56 -58
- package/core/plugin/{index.js → index.ts} +19 -8
- package/core/plugin/{loader.js → loader.ts} +87 -69
- package/core/plugin/{registry.js → registry.ts} +49 -45
- package/core/plugins/{webhook.js → webhook.ts} +43 -27
- package/core/schemas/agents.ts +27 -0
- package/core/schemas/analysis.ts +41 -0
- package/core/schemas/ideas.ts +83 -0
- package/core/schemas/index.ts +73 -0
- package/core/schemas/outcomes.ts +22 -0
- package/core/schemas/project.ts +26 -0
- package/core/schemas/roadmap.ts +90 -0
- package/core/schemas/shipped.ts +82 -0
- package/core/schemas/state.ts +107 -0
- package/core/session/index.ts +17 -0
- package/core/session/{metrics.js → metrics.ts} +64 -46
- package/core/session/{index.js → session-manager.ts} +51 -117
- package/core/session/types.ts +29 -0
- package/core/session/utils.ts +57 -0
- package/core/state/index.ts +25 -0
- package/core/state/manager.ts +376 -0
- package/core/state/types.ts +185 -0
- package/core/tsconfig.json +22 -0
- package/core/types/index.ts +506 -0
- package/core/utils/{animations.js → animations.ts} +74 -28
- package/core/utils/{branding.js → branding.ts} +29 -4
- package/core/utils/{date-helper.js → date-helper.ts} +31 -74
- package/core/utils/file-helper.ts +262 -0
- package/core/utils/{jsonl-helper.js → jsonl-helper.ts} +71 -107
- package/core/utils/{logger.js → logger.ts} +24 -12
- package/core/utils/{output.js → output.ts} +25 -13
- package/core/utils/{project-capabilities.js → project-capabilities.ts} +31 -18
- package/core/utils/{session-helper.js → session-helper.ts} +79 -66
- package/core/utils/{version.js → version.ts} +23 -31
- package/core/view-generator.ts +536 -0
- package/package.json +23 -17
- package/packages/shared/.turbo/turbo-build.log +14 -0
- package/packages/shared/dist/index.d.ts +8 -613
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +4110 -118
- package/packages/shared/dist/schemas.d.ts +408 -0
- package/packages/shared/dist/schemas.d.ts.map +1 -0
- package/packages/shared/dist/types.d.ts +144 -0
- package/packages/shared/dist/types.d.ts.map +1 -0
- package/packages/shared/dist/unified.d.ts +139 -0
- package/packages/shared/dist/unified.d.ts.map +1 -0
- package/packages/shared/dist/utils.d.ts +60 -0
- package/packages/shared/dist/utils.d.ts.map +1 -0
- package/packages/shared/package.json +4 -4
- package/packages/shared/src/index.ts +1 -0
- package/packages/shared/src/unified.ts +174 -0
- package/packages/web/app/api/claude/sessions/route.ts +1 -1
- package/packages/web/app/api/claude/status/route.ts +1 -1
- package/packages/web/app/api/migrate/route.ts +46 -0
- package/packages/web/app/api/projects/[id]/route.ts +1 -1
- package/packages/web/app/api/projects/[id]/stats/route.ts +30 -2
- package/packages/web/app/api/projects/[id]/status/route.ts +1 -1
- package/packages/web/app/api/projects/route.ts +1 -1
- package/packages/web/app/api/settings/route.ts +97 -0
- package/packages/web/app/api/v2/projects/[id]/unified/route.ts +57 -0
- package/packages/web/app/globals.css +38 -0
- package/packages/web/app/layout.tsx +10 -2
- package/packages/web/app/page.tsx +9 -224
- package/packages/web/app/project/[id]/page.tsx +191 -63
- package/packages/web/app/project/[id]/stats/loading.tsx +43 -0
- package/packages/web/app/project/[id]/stats/page.tsx +203 -403
- package/packages/web/app/settings/page.tsx +222 -2
- package/packages/web/components/ActivityTimeline/ActivityTimeline.constants.ts +2 -0
- package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +50 -0
- package/packages/web/components/ActivityTimeline/ActivityTimeline.types.ts +8 -0
- package/packages/web/components/ActivityTimeline/hooks/index.ts +2 -0
- package/packages/web/components/ActivityTimeline/hooks/useExpandable.ts +9 -0
- package/packages/web/components/ActivityTimeline/hooks/useGroupedEvents.ts +23 -0
- package/packages/web/components/ActivityTimeline/index.ts +2 -0
- package/packages/web/components/AgentsCard/AgentsCard.tsx +63 -0
- package/packages/web/components/AgentsCard/AgentsCard.types.ts +13 -0
- package/packages/web/components/AgentsCard/index.ts +2 -0
- package/packages/web/components/AppSidebar/AppSidebar.tsx +134 -0
- package/packages/web/components/AppSidebar/index.ts +1 -0
- package/packages/web/components/BackLink/BackLink.tsx +18 -0
- package/packages/web/components/BackLink/BackLink.types.ts +5 -0
- package/packages/web/components/BackLink/index.ts +2 -0
- package/packages/web/components/BentoCard/BentoCard.constants.ts +16 -0
- package/packages/web/components/BentoCard/BentoCard.tsx +47 -0
- package/packages/web/components/BentoCard/BentoCard.types.ts +15 -0
- package/packages/web/components/BentoCard/index.ts +2 -0
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.constants.ts +9 -0
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.tsx +18 -0
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.types.ts +5 -0
- package/packages/web/components/BentoCardSkeleton/index.ts +2 -0
- package/packages/web/components/BentoGrid/BentoGrid.tsx +18 -0
- package/packages/web/components/BentoGrid/BentoGrid.types.ts +4 -0
- package/packages/web/components/BentoGrid/index.ts +2 -0
- package/packages/web/components/CommandButton/index.ts +1 -0
- package/packages/web/components/ConnectionStatus/index.ts +1 -0
- package/packages/web/components/DashboardContent/DashboardContent.tsx +254 -0
- package/packages/web/components/DashboardContent/index.ts +1 -0
- package/packages/web/components/DateGroup/DateGroup.tsx +18 -0
- package/packages/web/components/DateGroup/DateGroup.types.ts +6 -0
- package/packages/web/components/DateGroup/DateGroup.utils.ts +11 -0
- package/packages/web/components/DateGroup/index.ts +2 -0
- package/packages/web/components/EmptyState/EmptyState.tsx +58 -0
- package/packages/web/components/EmptyState/EmptyState.types.ts +10 -0
- package/packages/web/components/EmptyState/index.ts +2 -0
- package/packages/web/components/EventRow/EventRow.constants.ts +10 -0
- package/packages/web/components/EventRow/EventRow.tsx +49 -0
- package/packages/web/components/EventRow/EventRow.types.ts +7 -0
- package/packages/web/components/EventRow/EventRow.utils.ts +49 -0
- package/packages/web/components/EventRow/index.ts +2 -0
- package/packages/web/components/ExpandButton/ExpandButton.tsx +18 -0
- package/packages/web/components/ExpandButton/ExpandButton.types.ts +6 -0
- package/packages/web/components/ExpandButton/index.ts +2 -0
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.tsx +14 -0
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.types.ts +5 -0
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.utils.ts +13 -0
- package/packages/web/components/HealthGradientBackground/index.ts +2 -0
- package/packages/web/components/HeroSection/HeroSection.tsx +55 -0
- package/packages/web/components/HeroSection/HeroSection.types.ts +14 -0
- package/packages/web/components/HeroSection/HeroSection.utils.ts +7 -0
- package/packages/web/components/HeroSection/hooks/index.ts +2 -0
- package/packages/web/components/HeroSection/hooks/useCountUp.ts +45 -0
- package/packages/web/components/HeroSection/hooks/useWeeklyActivity.ts +18 -0
- package/packages/web/components/HeroSection/index.ts +2 -0
- package/packages/web/components/IdeasCard/IdeasCard.tsx +48 -0
- package/packages/web/components/IdeasCard/IdeasCard.types.ts +9 -0
- package/packages/web/components/IdeasCard/index.ts +2 -0
- package/packages/web/components/InsightMessage/InsightMessage.tsx +9 -0
- package/packages/web/components/InsightMessage/InsightMessage.types.ts +3 -0
- package/packages/web/components/InsightMessage/index.ts +2 -0
- package/packages/web/components/Logo/index.ts +1 -0
- package/packages/web/components/MarkdownContent/index.ts +1 -0
- package/packages/web/components/NowCard/NowCard.tsx +93 -0
- package/packages/web/components/NowCard/NowCard.types.ts +15 -0
- package/packages/web/components/NowCard/index.ts +2 -0
- package/packages/web/components/ProgressRing/ProgressRing.constants.ts +20 -0
- package/packages/web/components/ProgressRing/ProgressRing.tsx +51 -0
- package/packages/web/components/ProgressRing/ProgressRing.types.ts +11 -0
- package/packages/web/components/ProgressRing/index.ts +2 -0
- package/packages/web/components/ProjectAvatar/index.ts +1 -0
- package/packages/web/components/Providers/index.ts +1 -0
- package/packages/web/components/QueueCard/QueueCard.tsx +72 -0
- package/packages/web/components/QueueCard/QueueCard.types.ts +11 -0
- package/packages/web/components/QueueCard/QueueCard.utils.ts +12 -0
- package/packages/web/components/QueueCard/index.ts +2 -0
- package/packages/web/components/RoadmapCard/RoadmapCard.tsx +77 -0
- package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +15 -0
- package/packages/web/components/RoadmapCard/index.ts +2 -0
- package/packages/web/components/ShipsCard/ShipsCard.tsx +52 -0
- package/packages/web/components/ShipsCard/ShipsCard.types.ts +12 -0
- package/packages/web/components/ShipsCard/ShipsCard.utils.ts +4 -0
- package/packages/web/components/ShipsCard/index.ts +2 -0
- package/packages/web/components/SparklineChart/SparklineChart.tsx +38 -0
- package/packages/web/components/SparklineChart/SparklineChart.types.ts +6 -0
- package/packages/web/components/SparklineChart/index.ts +2 -0
- package/packages/web/components/StreakCard/StreakCard.constants.ts +2 -0
- package/packages/web/components/StreakCard/StreakCard.tsx +53 -0
- package/packages/web/components/StreakCard/StreakCard.types.ts +4 -0
- package/packages/web/components/StreakCard/index.ts +2 -0
- package/packages/web/components/TasksCounter/TasksCounter.tsx +14 -0
- package/packages/web/components/TasksCounter/TasksCounter.types.ts +3 -0
- package/packages/web/components/TasksCounter/index.ts +2 -0
- package/packages/web/components/TechStackBadges/index.ts +1 -0
- package/packages/web/components/{TerminalTab.tsx → TerminalTabs/TerminalTab.tsx} +11 -0
- package/packages/web/components/{TerminalTabs.tsx → TerminalTabs/TerminalTabs.tsx} +29 -28
- package/packages/web/components/TerminalTabs/index.ts +1 -0
- package/packages/web/components/VelocityBadge/VelocityBadge.tsx +27 -0
- package/packages/web/components/VelocityBadge/VelocityBadge.types.ts +3 -0
- package/packages/web/components/VelocityBadge/index.ts +2 -0
- package/packages/web/components/VelocityCard/VelocityCard.tsx +71 -0
- package/packages/web/components/VelocityCard/VelocityCard.types.ts +7 -0
- package/packages/web/components/VelocityCard/index.ts +2 -0
- package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +13 -0
- package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +3 -0
- package/packages/web/components/WeeklySparkline/index.ts +2 -0
- package/packages/web/components/ui/input.tsx +21 -0
- package/packages/web/components/ui/tooltip.tsx +2 -2
- package/packages/web/context/TerminalTabsContext.tsx +46 -1
- package/packages/web/hooks/useClaudeTerminal.ts +71 -21
- package/packages/web/hooks/useProjectStats.ts +55 -0
- package/packages/web/hooks/useProjects.ts +6 -6
- package/packages/web/lib/actions/projects.ts +15 -0
- package/packages/web/lib/json-loader.ts +630 -0
- package/packages/web/lib/services/index.ts +9 -0
- package/packages/web/lib/services/migration.server.ts +598 -0
- package/packages/web/lib/services/projects.server.ts +52 -0
- package/packages/web/lib/services/stats.server.ts +264 -0
- package/packages/web/lib/unified-loader.ts +396 -0
- package/packages/web/next-env.d.ts +1 -1
- package/packages/web/package.json +10 -6
- package/packages/web/server.ts +36 -6
- package/templates/commands/done.md +76 -32
- package/templates/commands/feature.md +121 -47
- package/templates/commands/idea.md +81 -8
- package/templates/commands/now.md +41 -17
- package/templates/commands/ship.md +64 -25
- package/templates/commands/sync.md +28 -3
- package/core/agentic/agent-router.js +0 -128
- package/core/agentic/chain-of-thought.js +0 -578
- package/core/agentic/command-executor.js +0 -421
- package/core/agentic/context-filter.js +0 -354
- package/core/agentic/ground-truth.js +0 -591
- package/core/agentic/loop-detector.js +0 -406
- package/core/agentic/memory-system.js +0 -850
- package/core/agentic/parallel-tools.js +0 -366
- package/core/agentic/plan-mode.js +0 -572
- package/core/agentic/prompt-builder.js +0 -338
- package/core/agentic/response-templates.js +0 -290
- package/core/agentic/semantic-compression.js +0 -517
- package/core/agentic/think-blocks.js +0 -657
- package/core/agentic/tool-registry.js +0 -184
- package/core/agentic/validation-rules.js +0 -380
- package/core/command-registry.js +0 -698
- package/core/commands.js +0 -2237
- package/core/domain/task-stack.js +0 -497
- package/core/infrastructure/legacy-installer-detector.js +0 -546
- package/core/infrastructure/migrator.js +0 -799
- package/core/infrastructure/session-manager.js +0 -390
- package/core/utils/file-helper.js +0 -329
- package/packages/web/app/api/projects/[id]/delete/route.ts +0 -21
- package/packages/web/app/api/stats/route.ts +0 -38
- package/packages/web/components/AppSidebar.tsx +0 -113
- package/packages/web/hooks/useStats.ts +0 -28
- /package/packages/web/components/{CommandButton.tsx → CommandButton/CommandButton.tsx} +0 -0
- /package/packages/web/components/{ConnectionStatus.tsx → ConnectionStatus/ConnectionStatus.tsx} +0 -0
- /package/packages/web/components/{Logo.tsx → Logo/Logo.tsx} +0 -0
- /package/packages/web/components/{MarkdownContent.tsx → MarkdownContent/MarkdownContent.tsx} +0 -0
- /package/packages/web/components/{ProjectAvatar.tsx → ProjectAvatar/ProjectAvatar.tsx} +0 -0
- /package/packages/web/components/{providers.tsx → Providers/Providers.tsx} +0 -0
- /package/packages/web/components/{TechStackBadges.tsx → TechStackBadges/TechStackBadges.tsx} +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Templates
|
|
3
|
+
* Consistent response formatting for commands
|
|
4
|
+
*
|
|
5
|
+
* @module agentic/response-templates
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
interface ResponseData {
|
|
10
|
+
task?: string
|
|
11
|
+
duration?: string
|
|
12
|
+
feature?: string
|
|
13
|
+
filesChanged?: number
|
|
14
|
+
keyFile?: string
|
|
15
|
+
nextAction?: string
|
|
16
|
+
message?: string
|
|
17
|
+
ideas?: number
|
|
18
|
+
roadmapFeatures?: number
|
|
19
|
+
pendingTasks?: number
|
|
20
|
+
completedTasks?: number
|
|
21
|
+
error?: string
|
|
22
|
+
[key: string]: unknown
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface ResponseTemplate {
|
|
26
|
+
success: (data: ResponseData) => string
|
|
27
|
+
error: (data: ResponseData) => string
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Response templates by command
|
|
32
|
+
*/
|
|
33
|
+
const templates: Record<string, ResponseTemplate> = {
|
|
34
|
+
done: {
|
|
35
|
+
success: (data) => `✅ ${data.task || 'Task'} (${data.duration || '?'})
|
|
36
|
+
|
|
37
|
+
Files: ${data.filesChanged || 0} | Modified: ${data.keyFile || 'n/a'}
|
|
38
|
+
Next: ${data.nextAction || '/p:next for queue'}`,
|
|
39
|
+
|
|
40
|
+
error: (data) => `❌ Could not complete task
|
|
41
|
+
|
|
42
|
+
${data.error || 'Unknown error'}
|
|
43
|
+
Try: /p:now to check current task`,
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
ship: {
|
|
47
|
+
success: (data) => `🚀 ${data.feature || 'Feature'} shipped!
|
|
48
|
+
|
|
49
|
+
${data.message || 'Successfully deployed'}
|
|
50
|
+
Next: ${data.nextAction || '/p:recap for progress'}`,
|
|
51
|
+
|
|
52
|
+
error: (data) => `❌ Ship failed
|
|
53
|
+
|
|
54
|
+
${data.error || 'Unknown error'}
|
|
55
|
+
Check git status and try again`,
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
now: {
|
|
59
|
+
success: (data) => `🎯 Now working on: ${data.task || 'Task'}
|
|
60
|
+
|
|
61
|
+
${data.message || 'Focus set'}
|
|
62
|
+
When done: /p:done`,
|
|
63
|
+
|
|
64
|
+
error: (data) => `❌ Could not set task
|
|
65
|
+
|
|
66
|
+
${data.error || 'Unknown error'}
|
|
67
|
+
Try: /p:init if project not initialized`,
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
feature: {
|
|
71
|
+
success: (data) => `✨ Feature added: ${data.feature || 'New feature'}
|
|
72
|
+
|
|
73
|
+
${data.message || 'Added to roadmap'}
|
|
74
|
+
Start: /p:now to begin first task`,
|
|
75
|
+
|
|
76
|
+
error: (data) => `❌ Could not add feature
|
|
77
|
+
|
|
78
|
+
${data.error || 'Unknown error'}`,
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
idea: {
|
|
82
|
+
success: (data) => `💡 Idea captured!
|
|
83
|
+
|
|
84
|
+
${data.message || 'Saved to ideas.md'}
|
|
85
|
+
Total ideas: ${data.ideas || '?'}`,
|
|
86
|
+
|
|
87
|
+
error: (data) => `❌ Could not save idea
|
|
88
|
+
|
|
89
|
+
${data.error || 'Unknown error'}`,
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
recap: {
|
|
93
|
+
success: (data) => `📊 Project Recap
|
|
94
|
+
|
|
95
|
+
Features: ${data.roadmapFeatures || 0}
|
|
96
|
+
Pending: ${data.pendingTasks || 0}
|
|
97
|
+
Completed: ${data.completedTasks || 0}
|
|
98
|
+
|
|
99
|
+
${data.message || ''}`,
|
|
100
|
+
|
|
101
|
+
error: (data) => `❌ Could not generate recap
|
|
102
|
+
|
|
103
|
+
${data.error || 'Unknown error'}
|
|
104
|
+
Try: /p:sync to refresh state`,
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
sync: {
|
|
108
|
+
success: (data) => `🔄 Sync complete
|
|
109
|
+
|
|
110
|
+
${data.message || 'Project state updated'}
|
|
111
|
+
Next: ${data.nextAction || '/p:recap for overview'}`,
|
|
112
|
+
|
|
113
|
+
error: (data) => `❌ Sync failed
|
|
114
|
+
|
|
115
|
+
${data.error || 'Unknown error'}
|
|
116
|
+
Try: /p:init to reinitialize`,
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
init: {
|
|
120
|
+
success: (data) => `🎉 Project initialized!
|
|
121
|
+
|
|
122
|
+
${data.message || 'Ready to use prjct'}
|
|
123
|
+
Next: /p:sync to analyze codebase`,
|
|
124
|
+
|
|
125
|
+
error: (data) => `❌ Initialization failed
|
|
126
|
+
|
|
127
|
+
${data.error || 'Unknown error'}
|
|
128
|
+
Check permissions and try again`,
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
default: {
|
|
132
|
+
success: (data) => `✅ Done
|
|
133
|
+
|
|
134
|
+
${data.message || 'Operation completed'}`,
|
|
135
|
+
|
|
136
|
+
error: (data) => `❌ Failed
|
|
137
|
+
|
|
138
|
+
${data.error || 'Unknown error'}`,
|
|
139
|
+
},
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Format response for a command
|
|
144
|
+
*/
|
|
145
|
+
function format(commandName: string, data: ResponseData): string {
|
|
146
|
+
const template = templates[commandName] || templates.default
|
|
147
|
+
const success = data.error ? false : true
|
|
148
|
+
|
|
149
|
+
if (success) {
|
|
150
|
+
return template.success(data)
|
|
151
|
+
} else {
|
|
152
|
+
return template.error(data)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Get template for command
|
|
158
|
+
*/
|
|
159
|
+
function getTemplate(commandName: string): ResponseTemplate {
|
|
160
|
+
return templates[commandName] || templates.default
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export { format, getTemplate, templates }
|
|
164
|
+
export default { format, getTemplate, templates }
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Compression
|
|
3
|
+
* Compresses context while preserving meaning
|
|
4
|
+
*
|
|
5
|
+
* @module agentic/semantic-compression
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
interface CompressionResult {
|
|
10
|
+
summary: string
|
|
11
|
+
originalLength: number
|
|
12
|
+
compressedLength: number
|
|
13
|
+
ratio: number
|
|
14
|
+
key: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface CompressionMetrics {
|
|
18
|
+
totalOriginal: number
|
|
19
|
+
totalCompressed: number
|
|
20
|
+
overallRatio: number
|
|
21
|
+
compressions: number
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
class SemanticCompression {
|
|
25
|
+
private metrics: CompressionMetrics
|
|
26
|
+
|
|
27
|
+
constructor() {
|
|
28
|
+
this.metrics = {
|
|
29
|
+
totalOriginal: 0,
|
|
30
|
+
totalCompressed: 0,
|
|
31
|
+
overallRatio: 1,
|
|
32
|
+
compressions: 0,
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Compress content while preserving semantic meaning
|
|
38
|
+
*/
|
|
39
|
+
compress(content: string, key: string): CompressionResult {
|
|
40
|
+
if (!content || !content.trim()) {
|
|
41
|
+
return {
|
|
42
|
+
summary: 'Empty',
|
|
43
|
+
originalLength: 0,
|
|
44
|
+
compressedLength: 0,
|
|
45
|
+
ratio: 1,
|
|
46
|
+
key,
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const originalLength = content.length
|
|
51
|
+
let summary: string
|
|
52
|
+
|
|
53
|
+
// Apply key-specific compression strategies
|
|
54
|
+
switch (key) {
|
|
55
|
+
case 'now':
|
|
56
|
+
summary = this.compressNow(content)
|
|
57
|
+
break
|
|
58
|
+
case 'next':
|
|
59
|
+
summary = this.compressNext(content)
|
|
60
|
+
break
|
|
61
|
+
case 'shipped':
|
|
62
|
+
summary = this.compressShipped(content)
|
|
63
|
+
break
|
|
64
|
+
case 'analysis':
|
|
65
|
+
summary = this.compressAnalysis(content)
|
|
66
|
+
break
|
|
67
|
+
case 'roadmap':
|
|
68
|
+
summary = this.compressRoadmap(content)
|
|
69
|
+
break
|
|
70
|
+
case 'codePatterns':
|
|
71
|
+
summary = this.compressCodePatterns(content)
|
|
72
|
+
break
|
|
73
|
+
default:
|
|
74
|
+
summary = this.compressGeneric(content)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const compressedLength = summary.length
|
|
78
|
+
const ratio = originalLength > 0 ? compressedLength / originalLength : 1
|
|
79
|
+
|
|
80
|
+
// Update metrics
|
|
81
|
+
this.metrics.totalOriginal += originalLength
|
|
82
|
+
this.metrics.totalCompressed += compressedLength
|
|
83
|
+
this.metrics.compressions++
|
|
84
|
+
this.metrics.overallRatio =
|
|
85
|
+
this.metrics.totalOriginal > 0 ? this.metrics.totalCompressed / this.metrics.totalOriginal : 1
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
summary,
|
|
89
|
+
originalLength,
|
|
90
|
+
compressedLength,
|
|
91
|
+
ratio,
|
|
92
|
+
key,
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Compress now.md content
|
|
98
|
+
*/
|
|
99
|
+
private compressNow(content: string): string {
|
|
100
|
+
// Extract task description
|
|
101
|
+
const taskMatch = content.match(/task:\s*["']?([^"'\n]+)["']?/i) || content.match(/#+\s*(.+)/m)
|
|
102
|
+
const task = taskMatch ? taskMatch[1].trim() : 'Unknown task'
|
|
103
|
+
|
|
104
|
+
// Extract started time
|
|
105
|
+
const startedMatch = content.match(/started:\s*(.+)/i)
|
|
106
|
+
const started = startedMatch ? startedMatch[1].trim() : ''
|
|
107
|
+
|
|
108
|
+
// Extract agent if present
|
|
109
|
+
const agentMatch = content.match(/agent:\s*(.+)/i)
|
|
110
|
+
const agent = agentMatch ? agentMatch[1].trim() : ''
|
|
111
|
+
|
|
112
|
+
let summary = `Task: ${task}`
|
|
113
|
+
if (started) summary += ` | Started: ${started}`
|
|
114
|
+
if (agent) summary += ` | Agent: ${agent}`
|
|
115
|
+
|
|
116
|
+
return summary
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Compress next.md content
|
|
121
|
+
*/
|
|
122
|
+
private compressNext(content: string): string {
|
|
123
|
+
// Count tasks
|
|
124
|
+
const pending = (content.match(/- \[ \]/g) || []).length
|
|
125
|
+
const completed = (content.match(/- \[x\]/gi) || []).length
|
|
126
|
+
const total = pending + completed
|
|
127
|
+
|
|
128
|
+
// Get first few pending tasks
|
|
129
|
+
const taskLines = content.match(/- \[ \] .+/g) || []
|
|
130
|
+
const topTasks = taskLines.slice(0, 3).map((t) => t.replace('- [ ] ', '').trim())
|
|
131
|
+
|
|
132
|
+
let summary = `Queue: ${pending} pending, ${completed} done (${total} total)`
|
|
133
|
+
if (topTasks.length > 0) {
|
|
134
|
+
summary += ` | Next: ${topTasks.join(', ')}`
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return summary
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Compress shipped.md content
|
|
142
|
+
*/
|
|
143
|
+
private compressShipped(content: string): string {
|
|
144
|
+
// Count shipped items
|
|
145
|
+
const shipped = (content.match(/^##\s+/gm) || []).length
|
|
146
|
+
const lines = content.split('\n')
|
|
147
|
+
|
|
148
|
+
// Get most recent ship
|
|
149
|
+
let recentShip = ''
|
|
150
|
+
for (const line of lines) {
|
|
151
|
+
if (line.startsWith('## ')) {
|
|
152
|
+
recentShip = line.replace('## ', '').trim()
|
|
153
|
+
break
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
let summary = `Shipped: ${shipped} items`
|
|
158
|
+
if (recentShip) summary += ` | Recent: ${recentShip.substring(0, 50)}`
|
|
159
|
+
|
|
160
|
+
return summary
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Compress analysis content
|
|
165
|
+
*/
|
|
166
|
+
private compressAnalysis(content: string): string {
|
|
167
|
+
// Extract stack
|
|
168
|
+
const stackMatch =
|
|
169
|
+
content.match(/stack[:\s]+([^\n]+)/i) ||
|
|
170
|
+
content.match(/technology[:\s]+([^\n]+)/i) ||
|
|
171
|
+
content.match(/framework[:\s]+([^\n]+)/i)
|
|
172
|
+
const stack = stackMatch ? stackMatch[1].trim() : 'Unknown'
|
|
173
|
+
|
|
174
|
+
// Extract file count if present
|
|
175
|
+
const filesMatch = content.match(/(\d+)\s*files/i)
|
|
176
|
+
const files = filesMatch ? filesMatch[1] : ''
|
|
177
|
+
|
|
178
|
+
// Extract language
|
|
179
|
+
const langMatch = content.match(/language[:\s]+([^\n]+)/i) || content.match(/primary[:\s]+([^\n]+)/i)
|
|
180
|
+
const language = langMatch ? langMatch[1].trim() : ''
|
|
181
|
+
|
|
182
|
+
let summary = `Stack: ${stack}`
|
|
183
|
+
if (language) summary += ` | Language: ${language}`
|
|
184
|
+
if (files) summary += ` | Files: ${files}`
|
|
185
|
+
|
|
186
|
+
return summary
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Compress roadmap content
|
|
191
|
+
*/
|
|
192
|
+
private compressRoadmap(content: string): string {
|
|
193
|
+
// Count features
|
|
194
|
+
const features = (content.match(/^##\s+/gm) || []).length
|
|
195
|
+
|
|
196
|
+
// Get feature names
|
|
197
|
+
const featureNames: string[] = []
|
|
198
|
+
const matches = content.match(/^##\s+(.+)/gm) || []
|
|
199
|
+
matches.slice(0, 3).forEach((m) => {
|
|
200
|
+
featureNames.push(m.replace(/^##\s+/, '').trim())
|
|
201
|
+
})
|
|
202
|
+
|
|
203
|
+
let summary = `Roadmap: ${features} features`
|
|
204
|
+
if (featureNames.length > 0) {
|
|
205
|
+
summary += ` | Top: ${featureNames.join(', ')}`
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return summary
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Compress code patterns content
|
|
213
|
+
*/
|
|
214
|
+
private compressCodePatterns(content: string): string {
|
|
215
|
+
// Extract conventions section
|
|
216
|
+
const conventionsMatch = content.match(/## Conventions[\s\S]*?(?=##|$)/i)
|
|
217
|
+
let conventions = ''
|
|
218
|
+
if (conventionsMatch) {
|
|
219
|
+
const lines = conventionsMatch[0]
|
|
220
|
+
.split('\n')
|
|
221
|
+
.filter((l) => l.includes(':') || l.startsWith('-'))
|
|
222
|
+
.slice(0, 3)
|
|
223
|
+
conventions = lines.join(' | ')
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Check for anti-patterns
|
|
227
|
+
const hasAntiPatterns = content.toLowerCase().includes('anti-pattern')
|
|
228
|
+
|
|
229
|
+
let summary = 'Code patterns loaded'
|
|
230
|
+
if (conventions) summary += ` | ${conventions.substring(0, 100)}`
|
|
231
|
+
if (hasAntiPatterns) summary += ' | Has anti-patterns'
|
|
232
|
+
|
|
233
|
+
return summary
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Generic compression
|
|
238
|
+
*/
|
|
239
|
+
private compressGeneric(content: string): string {
|
|
240
|
+
// Take first meaningful lines
|
|
241
|
+
const lines = content.split('\n').filter((l) => l.trim() && !l.startsWith('#'))
|
|
242
|
+
const preview = lines.slice(0, 2).join(' | ')
|
|
243
|
+
|
|
244
|
+
if (preview.length > 150) {
|
|
245
|
+
return preview.substring(0, 150) + '...'
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return preview || 'Content available'
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Get compression metrics
|
|
253
|
+
*/
|
|
254
|
+
getMetrics(): CompressionMetrics {
|
|
255
|
+
return { ...this.metrics }
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Reset metrics
|
|
260
|
+
*/
|
|
261
|
+
resetMetrics(): void {
|
|
262
|
+
this.metrics = {
|
|
263
|
+
totalOriginal: 0,
|
|
264
|
+
totalCompressed: 0,
|
|
265
|
+
overallRatio: 1,
|
|
266
|
+
compressions: 0,
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const semanticCompression = new SemanticCompression()
|
|
272
|
+
export default semanticCompression
|
|
273
|
+
export { SemanticCompression }
|
|
@@ -0,0 +1,206 @@
|
|
|
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 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 templateLoader from './template-loader'
|
|
26
|
+
import contextBuilder from './context-builder'
|
|
27
|
+
import promptBuilder from './prompt-builder'
|
|
28
|
+
import toolRegistry from './tool-registry'
|
|
29
|
+
import loopDetector from './loop-detector'
|
|
30
|
+
import memorySystem from './memory-system'
|
|
31
|
+
import groundTruth from './ground-truth'
|
|
32
|
+
import semanticCompression from './semantic-compression'
|
|
33
|
+
import responseTemplates from './response-templates'
|
|
34
|
+
import chainOfThought from './chain-of-thought'
|
|
35
|
+
import thinkBlocks from './think-blocks'
|
|
36
|
+
import parallelTools from './parallel-tools'
|
|
37
|
+
import planMode from './plan-mode'
|
|
38
|
+
import contextFilter from './context-filter'
|
|
39
|
+
import validationRules from './validation-rules'
|
|
40
|
+
import agentRouter from './agent-router'
|
|
41
|
+
import smartContext from './smart-context'
|
|
42
|
+
import stateManager from '../state'
|
|
43
|
+
import { outcomeRecorder, outcomeAnalyzer } from '../outcomes'
|
|
44
|
+
import { agentPerformanceTracker } from '../agents'
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Agentic services interface.
|
|
48
|
+
* Each property provides access to a subsystem.
|
|
49
|
+
*/
|
|
50
|
+
export interface AgenticServices {
|
|
51
|
+
/**
|
|
52
|
+
* Template loader - loads command templates from templates/
|
|
53
|
+
* @see templateLoader
|
|
54
|
+
*/
|
|
55
|
+
templates: typeof templateLoader
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Context builder - builds ProjectContext for commands
|
|
59
|
+
* @see contextBuilder
|
|
60
|
+
*/
|
|
61
|
+
context: typeof contextBuilder
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Prompt builder - generates prompts from templates and context
|
|
65
|
+
* @see promptBuilder
|
|
66
|
+
*/
|
|
67
|
+
prompts: typeof promptBuilder
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Tool registry - registers and executes tools (Read, Write, Bash, etc.)
|
|
71
|
+
* @see toolRegistry
|
|
72
|
+
*/
|
|
73
|
+
tools: typeof toolRegistry
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Loop detector - detects and prevents infinite loops
|
|
77
|
+
* @see loopDetector
|
|
78
|
+
*/
|
|
79
|
+
loops: typeof loopDetector
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Memory system - stores and retrieves learned patterns
|
|
83
|
+
* @see memorySystem
|
|
84
|
+
*/
|
|
85
|
+
memory: typeof memorySystem
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Ground truth - verifies command preconditions
|
|
89
|
+
* @see groundTruth
|
|
90
|
+
*/
|
|
91
|
+
truth: typeof groundTruth
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Semantic compression - compresses context to fit token limits
|
|
95
|
+
* @see semanticCompression
|
|
96
|
+
*/
|
|
97
|
+
compression: typeof semanticCompression
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Response templates - generates formatted responses
|
|
101
|
+
* @see responseTemplates
|
|
102
|
+
*/
|
|
103
|
+
responses: typeof responseTemplates
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Chain of thought - adds reasoning to responses
|
|
107
|
+
* @see chainOfThought
|
|
108
|
+
*/
|
|
109
|
+
reasoning: typeof chainOfThought
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Think blocks - generates think block content
|
|
113
|
+
* @see thinkBlocks
|
|
114
|
+
*/
|
|
115
|
+
thinking: typeof thinkBlocks
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Parallel tools - executes tools in parallel
|
|
119
|
+
* @see parallelTools
|
|
120
|
+
*/
|
|
121
|
+
parallel: typeof parallelTools
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Plan mode - handles planning workflow
|
|
125
|
+
* @see planMode
|
|
126
|
+
*/
|
|
127
|
+
planning: typeof planMode
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Context filter - filters context for relevance
|
|
131
|
+
* @see contextFilter
|
|
132
|
+
*/
|
|
133
|
+
filter: typeof contextFilter
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Validation rules - validates command inputs
|
|
137
|
+
* @see validationRules
|
|
138
|
+
*/
|
|
139
|
+
validation: typeof validationRules
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Agent router - routes tasks to appropriate agents
|
|
143
|
+
* @see agentRouter
|
|
144
|
+
*/
|
|
145
|
+
router: typeof agentRouter
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Smart context - intelligent context filtering by task type
|
|
149
|
+
* @see smartContext
|
|
150
|
+
*/
|
|
151
|
+
smartContext: typeof smartContext
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* State manager - unified project state (read/write state.json)
|
|
155
|
+
* @see stateManager
|
|
156
|
+
*/
|
|
157
|
+
state: typeof stateManager
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Outcome recorder - records execution outcomes
|
|
161
|
+
* @see outcomeRecorder
|
|
162
|
+
*/
|
|
163
|
+
outcomes: typeof outcomeRecorder
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Outcome analyzer - analyzes outcomes for patterns
|
|
167
|
+
* @see outcomeAnalyzer
|
|
168
|
+
*/
|
|
169
|
+
outcomeAnalysis: typeof outcomeAnalyzer
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Agent performance tracker - tracks agent performance
|
|
173
|
+
* @see agentPerformanceTracker
|
|
174
|
+
*/
|
|
175
|
+
agentPerformance: typeof agentPerformanceTracker
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Singleton services instance.
|
|
180
|
+
* Import and use this instead of individual module imports.
|
|
181
|
+
*/
|
|
182
|
+
export const services: AgenticServices = {
|
|
183
|
+
templates: templateLoader,
|
|
184
|
+
context: contextBuilder,
|
|
185
|
+
prompts: promptBuilder,
|
|
186
|
+
tools: toolRegistry,
|
|
187
|
+
loops: loopDetector,
|
|
188
|
+
memory: memorySystem,
|
|
189
|
+
truth: groundTruth,
|
|
190
|
+
compression: semanticCompression,
|
|
191
|
+
responses: responseTemplates,
|
|
192
|
+
reasoning: chainOfThought,
|
|
193
|
+
thinking: thinkBlocks,
|
|
194
|
+
parallel: parallelTools,
|
|
195
|
+
planning: planMode,
|
|
196
|
+
filter: contextFilter,
|
|
197
|
+
validation: validationRules,
|
|
198
|
+
router: agentRouter,
|
|
199
|
+
smartContext: smartContext,
|
|
200
|
+
state: stateManager,
|
|
201
|
+
outcomes: outcomeRecorder,
|
|
202
|
+
outcomeAnalysis: outcomeAnalyzer,
|
|
203
|
+
agentPerformance: agentPerformanceTracker,
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export default services
|