codehere 0.2.0 → 0.4.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.
Potentially problematic release.
This version of codehere might be problematic. Click here for more details.
- package/README.md +223 -42
- package/dist/application/agents/documentation-agent.d.ts +24 -0
- package/dist/application/agents/documentation-agent.d.ts.map +1 -0
- package/dist/application/agents/documentation-agent.js +399 -0
- package/dist/application/agents/documentation-agent.js.map +1 -0
- package/dist/application/agents/execution-agent.d.ts +11 -0
- package/dist/application/agents/execution-agent.d.ts.map +1 -1
- package/dist/application/agents/execution-agent.js +289 -80
- package/dist/application/agents/execution-agent.js.map +1 -1
- package/dist/application/agents/multi-agent-orchestrator.d.ts +4 -0
- package/dist/application/agents/multi-agent-orchestrator.d.ts.map +1 -1
- package/dist/application/agents/multi-agent-orchestrator.js +86 -0
- package/dist/application/agents/multi-agent-orchestrator.js.map +1 -1
- package/dist/application/agents/planning-agent.d.ts +3 -0
- package/dist/application/agents/planning-agent.d.ts.map +1 -1
- package/dist/application/agents/planning-agent.js +132 -64
- package/dist/application/agents/planning-agent.js.map +1 -1
- package/dist/application/agents/product-requirements-agent.d.ts +21 -0
- package/dist/application/agents/product-requirements-agent.d.ts.map +1 -0
- package/dist/application/agents/product-requirements-agent.js +247 -0
- package/dist/application/agents/product-requirements-agent.js.map +1 -0
- package/dist/application/agents/validation-agent.d.ts +5 -1
- package/dist/application/agents/validation-agent.d.ts.map +1 -1
- package/dist/application/agents/validation-agent.js +156 -21
- package/dist/application/agents/validation-agent.js.map +1 -1
- package/dist/application/services/dependency-container.d.ts +25 -2
- package/dist/application/services/dependency-container.d.ts.map +1 -1
- package/dist/application/services/dependency-container.js +163 -1
- package/dist/application/services/dependency-container.js.map +1 -1
- package/dist/application/services/intelligent-router.d.ts +13 -0
- package/dist/application/services/intelligent-router.d.ts.map +1 -1
- package/dist/application/services/intelligent-router.js +300 -87
- package/dist/application/services/intelligent-router.js.map +1 -1
- package/dist/application/use-cases/ask-question-use-case.d.ts +31 -0
- package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/ask-question-use-case.js +254 -55
- package/dist/application/use-cases/ask-question-use-case.js.map +1 -1
- package/dist/application/use-cases/edit-file-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/edit-file-use-case.js +86 -4
- package/dist/application/use-cases/edit-file-use-case.js.map +1 -1
- package/dist/application/use-cases/planning-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/planning-use-case.js +10 -1
- package/dist/application/use-cases/planning-use-case.js.map +1 -1
- package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/react-orchestration-use-case.js +6 -2
- package/dist/application/use-cases/react-orchestration-use-case.js.map +1 -1
- package/dist/domain/entities/documentation.d.ts +35 -0
- package/dist/domain/entities/documentation.d.ts.map +1 -0
- package/dist/domain/entities/documentation.js +6 -0
- package/dist/domain/entities/documentation.js.map +1 -0
- package/dist/domain/entities/product-requirements.d.ts +50 -0
- package/dist/domain/entities/product-requirements.d.ts.map +1 -0
- package/dist/domain/entities/product-requirements.js +6 -0
- package/dist/domain/entities/product-requirements.js.map +1 -0
- package/dist/domain/entities/task.d.ts +152 -0
- package/dist/domain/entities/task.d.ts.map +1 -0
- package/dist/domain/entities/task.js +61 -0
- package/dist/domain/entities/task.js.map +1 -0
- package/dist/domain/interfaces/agent.interface.d.ts +15 -0
- package/dist/domain/interfaces/agent.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/agent.interface.js +6 -0
- package/dist/domain/interfaces/agent.interface.js.map +1 -0
- package/dist/domain/services/environment-mode-manager.d.ts +18 -0
- package/dist/domain/services/environment-mode-manager.d.ts.map +1 -0
- package/dist/domain/services/environment-mode-manager.js +37 -0
- package/dist/domain/services/environment-mode-manager.js.map +1 -0
- package/dist/domain/services/react-loop.d.ts +8 -0
- package/dist/domain/services/react-loop.d.ts.map +1 -1
- package/dist/domain/services/react-loop.js +82 -6
- package/dist/domain/services/react-loop.js.map +1 -1
- package/dist/domain/services/risk-tier-detector.d.ts +18 -0
- package/dist/domain/services/risk-tier-detector.d.ts.map +1 -0
- package/dist/domain/services/risk-tier-detector.js +65 -0
- package/dist/domain/services/risk-tier-detector.js.map +1 -0
- package/dist/formatter.d.ts +2 -2
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +40 -20
- package/dist/formatter.js.map +1 -1
- package/dist/index.js +218 -125
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/ai/cohere-ai-service.d.ts +3 -1
- package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -1
- package/dist/infrastructure/ai/cohere-ai-service.js +65 -5
- package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -1
- package/dist/infrastructure/ai/fake-ai-service.d.ts +22 -0
- package/dist/infrastructure/ai/fake-ai-service.d.ts.map +1 -0
- package/dist/infrastructure/ai/fake-ai-service.js +59 -0
- package/dist/infrastructure/ai/fake-ai-service.js.map +1 -0
- package/dist/infrastructure/ai/provider-ai-service.d.ts +59 -0
- package/dist/infrastructure/ai/provider-ai-service.d.ts.map +1 -0
- package/dist/infrastructure/ai/provider-ai-service.js +477 -0
- package/dist/infrastructure/ai/provider-ai-service.js.map +1 -0
- package/dist/infrastructure/cache/embedding-cache.d.ts +13 -1
- package/dist/infrastructure/cache/embedding-cache.d.ts.map +1 -1
- package/dist/infrastructure/cache/embedding-cache.js +80 -9
- package/dist/infrastructure/cache/embedding-cache.js.map +1 -1
- package/dist/infrastructure/cache/query-result-cache.d.ts +68 -0
- package/dist/infrastructure/cache/query-result-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/query-result-cache.js +138 -0
- package/dist/infrastructure/cache/query-result-cache.js.map +1 -0
- package/dist/infrastructure/cache/response-cache.d.ts +86 -0
- package/dist/infrastructure/cache/response-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/response-cache.js +224 -0
- package/dist/infrastructure/cache/response-cache.js.map +1 -0
- package/dist/infrastructure/cache/security-scan-cache.d.ts +57 -0
- package/dist/infrastructure/cache/security-scan-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/security-scan-cache.js +124 -0
- package/dist/infrastructure/cache/security-scan-cache.js.map +1 -0
- package/dist/infrastructure/completion/bash-completion.d.ts +8 -0
- package/dist/infrastructure/completion/bash-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/bash-completion.js +101 -0
- package/dist/infrastructure/completion/bash-completion.js.map +1 -0
- package/dist/infrastructure/completion/completion-generator.d.ts +42 -0
- package/dist/infrastructure/completion/completion-generator.d.ts.map +1 -0
- package/dist/infrastructure/completion/completion-generator.js +184 -0
- package/dist/infrastructure/completion/completion-generator.js.map +1 -0
- package/dist/infrastructure/completion/fish-completion.d.ts +8 -0
- package/dist/infrastructure/completion/fish-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/fish-completion.js +65 -0
- package/dist/infrastructure/completion/fish-completion.js.map +1 -0
- package/dist/infrastructure/completion/zsh-completion.d.ts +8 -0
- package/dist/infrastructure/completion/zsh-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/zsh-completion.js +85 -0
- package/dist/infrastructure/completion/zsh-completion.js.map +1 -0
- package/dist/infrastructure/context/context-compressor.d.ts +94 -0
- package/dist/infrastructure/context/context-compressor.d.ts.map +1 -0
- package/dist/infrastructure/context/context-compressor.js +329 -0
- package/dist/infrastructure/context/context-compressor.js.map +1 -0
- package/dist/infrastructure/context/conversation-context.d.ts +58 -0
- package/dist/infrastructure/context/conversation-context.d.ts.map +1 -0
- package/dist/infrastructure/context/conversation-context.js +170 -0
- package/dist/infrastructure/context/conversation-context.js.map +1 -0
- package/dist/infrastructure/context/session-manager.d.ts +26 -0
- package/dist/infrastructure/context/session-manager.d.ts.map +1 -0
- package/dist/infrastructure/context/session-manager.js +98 -0
- package/dist/infrastructure/context/session-manager.js.map +1 -0
- package/dist/infrastructure/cost/cost-tracker.d.ts +1 -0
- package/dist/infrastructure/cost/cost-tracker.d.ts.map +1 -1
- package/dist/infrastructure/cost/cost-tracker.js +12 -5
- package/dist/infrastructure/cost/cost-tracker.js.map +1 -1
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts +6 -8
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +1 -1
- package/dist/infrastructure/governance/nist-ai-rmf.js +6 -8
- package/dist/infrastructure/governance/nist-ai-rmf.js.map +1 -1
- package/dist/infrastructure/governance/policy-as-code.d.ts +6 -8
- package/dist/infrastructure/governance/policy-as-code.d.ts.map +1 -1
- package/dist/infrastructure/governance/policy-as-code.js +24 -11
- package/dist/infrastructure/governance/policy-as-code.js.map +1 -1
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +7 -9
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +1 -1
- package/dist/infrastructure/governance/prompt-to-code-lineage.js +7 -9
- package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +1 -1
- package/dist/infrastructure/observability/execution-tracer.d.ts +5 -2
- package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -1
- package/dist/infrastructure/observability/execution-tracer.js +45 -8
- package/dist/infrastructure/observability/execution-tracer.js.map +1 -1
- package/dist/infrastructure/providers/cohere-provider.d.ts +39 -0
- package/dist/infrastructure/providers/cohere-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/cohere-provider.js +359 -0
- package/dist/infrastructure/providers/cohere-provider.js.map +1 -0
- package/dist/infrastructure/providers/fake-provider.d.ts +43 -0
- package/dist/infrastructure/providers/fake-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/fake-provider.js +130 -0
- package/dist/infrastructure/providers/fake-provider.js.map +1 -0
- package/dist/infrastructure/providers/local-llm-provider.d.ts +49 -0
- package/dist/infrastructure/providers/local-llm-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/local-llm-provider.js +330 -0
- package/dist/infrastructure/providers/local-llm-provider.js.map +1 -0
- package/dist/infrastructure/providers/model-config.types.d.ts +70 -0
- package/dist/infrastructure/providers/model-config.types.d.ts.map +1 -0
- package/dist/infrastructure/providers/model-config.types.js +9 -0
- package/dist/infrastructure/providers/model-config.types.js.map +1 -0
- package/dist/infrastructure/providers/model-provider.interface.d.ts +113 -0
- package/dist/infrastructure/providers/model-provider.interface.d.ts.map +1 -0
- package/dist/infrastructure/providers/model-provider.interface.js +8 -0
- package/dist/infrastructure/providers/model-provider.interface.js.map +1 -0
- package/dist/infrastructure/providers/openai-provider.d.ts +38 -0
- package/dist/infrastructure/providers/openai-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/openai-provider.js +413 -0
- package/dist/infrastructure/providers/openai-provider.js.map +1 -0
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts +48 -0
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts.map +1 -0
- package/dist/infrastructure/providers/operation-provider-resolver.js +105 -0
- package/dist/infrastructure/providers/operation-provider-resolver.js.map +1 -0
- package/dist/infrastructure/providers/provider-config-loader.d.ts +37 -0
- package/dist/infrastructure/providers/provider-config-loader.d.ts.map +1 -0
- package/dist/infrastructure/providers/provider-config-loader.js +120 -0
- package/dist/infrastructure/providers/provider-config-loader.js.map +1 -0
- package/dist/infrastructure/providers/provider-registry.d.ts +53 -0
- package/dist/infrastructure/providers/provider-registry.d.ts.map +1 -0
- package/dist/infrastructure/providers/provider-registry.js +88 -0
- package/dist/infrastructure/providers/provider-registry.js.map +1 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts +4 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +1 -1
- package/dist/infrastructure/security/ai-sast-scanner.js +82 -4
- package/dist/infrastructure/security/ai-sast-scanner.js.map +1 -1
- package/dist/infrastructure/security/enhanced-security-gate.d.ts +2 -0
- package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -1
- package/dist/infrastructure/security/enhanced-security-gate.js +74 -15
- package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -1
- package/dist/infrastructure/storage/plan-repository.d.ts +38 -0
- package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/plan-repository.js +133 -0
- package/dist/infrastructure/storage/plan-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +11 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +121 -6
- package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -1
- package/dist/infrastructure/storage/task-helpers.d.ts +58 -0
- package/dist/infrastructure/storage/task-helpers.d.ts.map +1 -0
- package/dist/infrastructure/storage/task-helpers.js +157 -0
- package/dist/infrastructure/storage/task-helpers.js.map +1 -0
- package/dist/infrastructure/storage/task-repository.d.ts +67 -0
- package/dist/infrastructure/storage/task-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/task-repository.js +205 -0
- package/dist/infrastructure/storage/task-repository.js.map +1 -0
- package/dist/infrastructure/ux/bi-directional-learning.d.ts +22 -0
- package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +1 -1
- package/dist/infrastructure/ux/bi-directional-learning.js +144 -7
- package/dist/infrastructure/ux/bi-directional-learning.js.map +1 -1
- package/dist/infrastructure/ux/capability-boundaries.d.ts +50 -0
- package/dist/infrastructure/ux/capability-boundaries.d.ts.map +1 -0
- package/dist/infrastructure/ux/capability-boundaries.js +167 -0
- package/dist/infrastructure/ux/capability-boundaries.js.map +1 -0
- package/dist/infrastructure/ux/comprehensive-formatter.d.ts +63 -0
- package/dist/infrastructure/ux/comprehensive-formatter.d.ts.map +1 -0
- package/dist/infrastructure/ux/comprehensive-formatter.js +212 -0
- package/dist/infrastructure/ux/comprehensive-formatter.js.map +1 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +24 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +1 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.js +144 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.js.map +1 -0
- package/dist/infrastructure/ux/expectation-management.d.ts +33 -0
- package/dist/infrastructure/ux/expectation-management.d.ts.map +1 -1
- package/dist/infrastructure/ux/expectation-management.js +138 -4
- package/dist/infrastructure/ux/expectation-management.js.map +1 -1
- package/dist/infrastructure/ux/feature-discovery.d.ts +47 -0
- package/dist/infrastructure/ux/feature-discovery.d.ts.map +1 -0
- package/dist/infrastructure/ux/feature-discovery.js +190 -0
- package/dist/infrastructure/ux/feature-discovery.js.map +1 -0
- package/dist/infrastructure/ux/feedback-prompt.d.ts +42 -0
- package/dist/infrastructure/ux/feedback-prompt.d.ts.map +1 -0
- package/dist/infrastructure/ux/feedback-prompt.js +181 -0
- package/dist/infrastructure/ux/feedback-prompt.js.map +1 -0
- package/dist/infrastructure/ux/hitl-review-portal.d.ts +47 -0
- package/dist/infrastructure/ux/hitl-review-portal.d.ts.map +1 -0
- package/dist/infrastructure/ux/hitl-review-portal.js +228 -0
- package/dist/infrastructure/ux/hitl-review-portal.js.map +1 -0
- package/dist/infrastructure/ux/hitl-validation.d.ts +35 -0
- package/dist/infrastructure/ux/hitl-validation.d.ts.map +1 -1
- package/dist/infrastructure/ux/hitl-validation.js +86 -0
- package/dist/infrastructure/ux/hitl-validation.js.map +1 -1
- package/dist/infrastructure/ux/progress-indicator.d.ts +55 -0
- package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -0
- package/dist/infrastructure/ux/progress-indicator.js +131 -0
- package/dist/infrastructure/ux/progress-indicator.js.map +1 -0
- package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +1 -1
- package/dist/infrastructure/ux/progressive-disclosure.js +2 -1
- package/dist/infrastructure/ux/progressive-disclosure.js.map +1 -1
- package/dist/infrastructure/ux/proportional-friction.d.ts +73 -0
- package/dist/infrastructure/ux/proportional-friction.d.ts.map +1 -0
- package/dist/infrastructure/ux/proportional-friction.js +200 -0
- package/dist/infrastructure/ux/proportional-friction.js.map +1 -0
- package/dist/infrastructure/ux/review-checkpoint.d.ts +35 -0
- package/dist/infrastructure/ux/review-checkpoint.d.ts.map +1 -0
- package/dist/infrastructure/ux/review-checkpoint.js +119 -0
- package/dist/infrastructure/ux/review-checkpoint.js.map +1 -0
- package/dist/infrastructure/ux/staged-feature-intro.d.ts +47 -0
- package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +1 -0
- package/dist/infrastructure/ux/staged-feature-intro.js +144 -0
- package/dist/infrastructure/ux/staged-feature-intro.js.map +1 -0
- package/dist/infrastructure/ux/syntax-highlighter.d.ts +21 -0
- package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +1 -0
- package/dist/infrastructure/ux/syntax-highlighter.js +172 -0
- package/dist/infrastructure/ux/syntax-highlighter.js.map +1 -0
- package/dist/infrastructure/validation/agent-feedback.d.ts +115 -0
- package/dist/infrastructure/validation/agent-feedback.d.ts.map +1 -0
- package/dist/infrastructure/validation/agent-feedback.js +227 -0
- package/dist/infrastructure/validation/agent-feedback.js.map +1 -0
- package/dist/infrastructure/validation/agent-validation-helper.d.ts +75 -0
- package/dist/infrastructure/validation/agent-validation-helper.d.ts.map +1 -0
- package/dist/infrastructure/validation/agent-validation-helper.js +88 -0
- package/dist/infrastructure/validation/agent-validation-helper.js.map +1 -0
- package/dist/infrastructure/validation/feedback-stats.d.ts +99 -0
- package/dist/infrastructure/validation/feedback-stats.d.ts.map +1 -0
- package/dist/infrastructure/validation/feedback-stats.js +173 -0
- package/dist/infrastructure/validation/feedback-stats.js.map +1 -0
- package/dist/infrastructure/validation/review-handler.d.ts +54 -0
- package/dist/infrastructure/validation/review-handler.d.ts.map +1 -0
- package/dist/infrastructure/validation/review-handler.js +206 -0
- package/dist/infrastructure/validation/review-handler.js.map +1 -0
- package/dist/infrastructure/validation/summary-aggregator.d.ts +42 -0
- package/dist/infrastructure/validation/summary-aggregator.d.ts.map +1 -0
- package/dist/infrastructure/validation/summary-aggregator.js +156 -0
- package/dist/infrastructure/validation/summary-aggregator.js.map +1 -0
- package/dist/infrastructure/validation/summary-extractor.d.ts +59 -0
- package/dist/infrastructure/validation/summary-extractor.d.ts.map +1 -0
- package/dist/infrastructure/validation/summary-extractor.js +102 -0
- package/dist/infrastructure/validation/summary-extractor.js.map +1 -0
- package/dist/infrastructure/validation/trace-summary.d.ts +72 -0
- package/dist/infrastructure/validation/trace-summary.d.ts.map +1 -0
- package/dist/infrastructure/validation/trace-summary.js +371 -0
- package/dist/infrastructure/validation/trace-summary.js.map +1 -0
- package/dist/infrastructure/validation/trust-config.d.ts +27 -0
- package/dist/infrastructure/validation/trust-config.d.ts.map +1 -0
- package/dist/infrastructure/validation/trust-config.js +113 -0
- package/dist/infrastructure/validation/trust-config.js.map +1 -0
- package/dist/infrastructure/xai/attention-visualizer.d.ts +6 -8
- package/dist/infrastructure/xai/attention-visualizer.d.ts.map +1 -1
- package/dist/infrastructure/xai/attention-visualizer.js +6 -8
- package/dist/infrastructure/xai/attention-visualizer.js.map +1 -1
- package/dist/infrastructure/xai/cot-visualizer.d.ts +6 -8
- package/dist/infrastructure/xai/cot-visualizer.d.ts.map +1 -1
- package/dist/infrastructure/xai/cot-visualizer.js +62 -18
- package/dist/infrastructure/xai/cot-visualizer.js.map +1 -1
- package/dist/infrastructure/xai/decision-tree-log.d.ts +6 -10
- package/dist/infrastructure/xai/decision-tree-log.d.ts.map +1 -1
- package/dist/infrastructure/xai/decision-tree-log.js +6 -10
- package/dist/infrastructure/xai/decision-tree-log.js.map +1 -1
- package/dist/infrastructure/xai/interactive-xai.d.ts +6 -8
- package/dist/infrastructure/xai/interactive-xai.d.ts.map +1 -1
- package/dist/infrastructure/xai/interactive-xai.js +6 -8
- package/dist/infrastructure/xai/interactive-xai.js.map +1 -1
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +6 -9
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +1 -1
- package/dist/infrastructure/xai/uncertainty-quantifier.js +6 -9
- package/dist/infrastructure/xai/uncertainty-quantifier.js.map +1 -1
- package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/ask-command.js +152 -13
- package/dist/presentation/cli/commands/ask-command.js.map +1 -1
- package/dist/presentation/cli/commands/docs-command.d.ts +12 -0
- package/dist/presentation/cli/commands/docs-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/docs-command.js +196 -0
- package/dist/presentation/cli/commands/docs-command.js.map +1 -0
- package/dist/presentation/cli/commands/fix-command.d.ts +8 -0
- package/dist/presentation/cli/commands/fix-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/fix-command.js +309 -0
- package/dist/presentation/cli/commands/fix-command.js.map +1 -0
- package/dist/presentation/cli/commands/help-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/help-command.js +2 -0
- package/dist/presentation/cli/commands/help-command.js.map +1 -1
- package/dist/presentation/cli/commands/orchestrate-command.d.ts +2 -0
- package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/orchestrate-command.js +88 -1
- package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -1
- package/dist/presentation/cli/commands/plan-command.d.ts +1 -0
- package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/plan-command.js +136 -7
- package/dist/presentation/cli/commands/plan-command.js.map +1 -1
- package/dist/presentation/cli/commands/product-command.d.ts +12 -0
- package/dist/presentation/cli/commands/product-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/product-command.js +188 -0
- package/dist/presentation/cli/commands/product-command.js.map +1 -0
- package/dist/presentation/cli/commands/react-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/react-command.js +98 -16
- package/dist/presentation/cli/commands/react-command.js.map +1 -1
- package/dist/presentation/cli/commands/review-command.d.ts +14 -0
- package/dist/presentation/cli/commands/review-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/review-command.js +22 -0
- package/dist/presentation/cli/commands/review-command.js.map +1 -0
- package/dist/presentation/cli/commands/run-command.d.ts +15 -0
- package/dist/presentation/cli/commands/run-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/run-command.js +29 -0
- package/dist/presentation/cli/commands/run-command.js.map +1 -0
- package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/setup-command.js +67 -12
- package/dist/presentation/cli/commands/setup-command.js.map +1 -1
- package/dist/presentation/cli/commands/smart-command.d.ts +3 -1
- package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/smart-command.js +227 -23
- package/dist/presentation/cli/commands/smart-command.js.map +1 -1
- package/dist/presentation/cli/commands/status-command.d.ts +11 -0
- package/dist/presentation/cli/commands/status-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/status-command.js +176 -0
- package/dist/presentation/cli/commands/status-command.js.map +1 -0
- package/dist/presentation/cli/commands/suggest-command.d.ts +13 -0
- package/dist/presentation/cli/commands/suggest-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/suggest-command.js +25 -0
- package/dist/presentation/cli/commands/suggest-command.js.map +1 -0
- package/dist/presentation/cli/commands/trace-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/trace-command.js +9 -5
- package/dist/presentation/cli/commands/trace-command.js.map +1 -1
- package/dist/presentation/cli/commands/undo-command.js +15 -6
- package/dist/presentation/cli/commands/undo-command.js.map +1 -1
- package/dist/presentation/cli/error-display.d.ts +2 -0
- package/dist/presentation/cli/error-display.d.ts.map +1 -1
- package/dist/presentation/cli/error-display.js +220 -2
- package/dist/presentation/cli/error-display.js.map +1 -1
- package/dist/presentation/cli/keyboard-shortcuts.d.ts +27 -0
- package/dist/presentation/cli/keyboard-shortcuts.d.ts.map +1 -0
- package/dist/presentation/cli/keyboard-shortcuts.js +77 -0
- package/dist/presentation/cli/keyboard-shortcuts.js.map +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +39 -2
- package/dist/session.js.map +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +8 -5
- package/dist/ui.js.map +1 -1
- package/dist/utils/version.js +2 -2
- package/dist/verification/backup.d.ts.map +1 -1
- package/dist/verification/backup.js +24 -3
- package/dist/verification/backup.js.map +1 -1
- package/dist/verification/compiler.js +47 -12
- package/dist/verification/compiler.js.map +1 -1
- package/package.json +10 -2
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: Explicit Capability Boundaries
|
|
3
|
+
* Task 3.3: Show limitations when user requests unsupported features
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Detects unsupported operation requests
|
|
7
|
+
* - Shows clear capability boundaries
|
|
8
|
+
* - Suggests alternatives when capabilities exceeded
|
|
9
|
+
*/
|
|
10
|
+
import { colors, separator, warning, info, createBox, } from '../../ui.js';
|
|
11
|
+
/**
|
|
12
|
+
* Display capability boundary message when unsupported operation detected
|
|
13
|
+
*/
|
|
14
|
+
export function displayCapabilityBoundary(boundary) {
|
|
15
|
+
console.log('');
|
|
16
|
+
console.log(separator('═', 80));
|
|
17
|
+
console.log(warning('⚠️ Capability Boundary'));
|
|
18
|
+
console.log(separator('═', 80));
|
|
19
|
+
console.log('');
|
|
20
|
+
console.log(colors.bold('Unsupported Operation:'));
|
|
21
|
+
console.log(` ${boundary.unsupportedOperation}`);
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(colors.bold('Reason:'));
|
|
24
|
+
console.log(` ${colors.dim(boundary.reason)}`);
|
|
25
|
+
console.log('');
|
|
26
|
+
if (boundary.alternatives && boundary.alternatives.length > 0) {
|
|
27
|
+
console.log(colors.bold('Alternatives:'));
|
|
28
|
+
boundary.alternatives.forEach((alt, idx) => {
|
|
29
|
+
console.log(` ${idx + 1}. ${info(alt)}`);
|
|
30
|
+
});
|
|
31
|
+
console.log('');
|
|
32
|
+
}
|
|
33
|
+
console.log(separator('═', 80));
|
|
34
|
+
console.log('');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect unsupported operations in user queries
|
|
38
|
+
*/
|
|
39
|
+
export class CapabilityBoundaryDetector {
|
|
40
|
+
unsupportedPatterns = [];
|
|
41
|
+
constructor() {
|
|
42
|
+
this.initializePatterns();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Detect if query requests unsupported operation
|
|
46
|
+
*/
|
|
47
|
+
detectUnsupported(query) {
|
|
48
|
+
const lowerQuery = query.toLowerCase();
|
|
49
|
+
// Check each unsupported pattern
|
|
50
|
+
for (const { pattern, reason, alternatives } of this.unsupportedPatterns) {
|
|
51
|
+
if (pattern.test(lowerQuery)) {
|
|
52
|
+
return {
|
|
53
|
+
unsupportedOperation: this.extractOperation(query, pattern),
|
|
54
|
+
reason,
|
|
55
|
+
alternatives,
|
|
56
|
+
canSuggest: true,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Extract operation from query
|
|
64
|
+
*/
|
|
65
|
+
extractOperation(query, pattern) {
|
|
66
|
+
const match = query.match(pattern);
|
|
67
|
+
if (match) {
|
|
68
|
+
return match[0];
|
|
69
|
+
}
|
|
70
|
+
return query.substring(0, 50) + (query.length > 50 ? '...' : '');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Initialize unsupported operation patterns
|
|
74
|
+
*/
|
|
75
|
+
initializePatterns() {
|
|
76
|
+
// Code execution (direct execution requests)
|
|
77
|
+
this.unsupportedPatterns.push({
|
|
78
|
+
pattern: /\b(execute|run|test|execute code|run code|run tests|execute tests|run program)\b/i,
|
|
79
|
+
reason: 'I cannot execute code or run tests directly for security reasons.',
|
|
80
|
+
alternatives: [
|
|
81
|
+
'Generate test code: codehere "create tests for src/auth.ts"',
|
|
82
|
+
'Suggest test commands: codehere ask "how to test authentication"',
|
|
83
|
+
'Review code manually and run tests yourself',
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
// Database operations
|
|
87
|
+
this.unsupportedPatterns.push({
|
|
88
|
+
pattern: /\b(connect to database|query database|run sql|execute sql|database connection)\b/i,
|
|
89
|
+
reason: 'I cannot connect to or query databases directly for security reasons.',
|
|
90
|
+
alternatives: [
|
|
91
|
+
'Show database connection code: codehere "show database connection example"',
|
|
92
|
+
'Generate database query code: codehere "create SQL query for users table"',
|
|
93
|
+
'Review database schema: codehere "explain database schema"',
|
|
94
|
+
],
|
|
95
|
+
});
|
|
96
|
+
// Network operations
|
|
97
|
+
this.unsupportedPatterns.push({
|
|
98
|
+
pattern: /\b(make http request|send request|fetch from url|call api endpoint)\b/i,
|
|
99
|
+
reason: 'I cannot make HTTP requests or call external APIs directly.',
|
|
100
|
+
alternatives: [
|
|
101
|
+
'Generate HTTP request code: codehere "create HTTP request function"',
|
|
102
|
+
'Show API integration example: codehere "show API integration pattern"',
|
|
103
|
+
'Review existing API calls: codehere "explain API calls in codebase"',
|
|
104
|
+
],
|
|
105
|
+
});
|
|
106
|
+
// File system operations (destructive)
|
|
107
|
+
this.unsupportedPatterns.push({
|
|
108
|
+
pattern: /\b(delete file|remove file|rm -rf|format disk|wipe data)\b/i,
|
|
109
|
+
reason: 'I cannot perform destructive file system operations directly.',
|
|
110
|
+
alternatives: [
|
|
111
|
+
'Suggest deletion commands: codehere ask "how to safely delete files"',
|
|
112
|
+
'Review files before deletion: codehere "list files to delete"',
|
|
113
|
+
'Generate safe deletion script: codehere "create file deletion script"',
|
|
114
|
+
],
|
|
115
|
+
});
|
|
116
|
+
// System commands
|
|
117
|
+
this.unsupportedPatterns.push({
|
|
118
|
+
pattern: /\b(shutdown|restart|kill process|stop service|install package system-wide)\b/i,
|
|
119
|
+
reason: 'I cannot execute system-level commands for security reasons.',
|
|
120
|
+
alternatives: [
|
|
121
|
+
'Suggest commands: codehere ask "how to restart service"',
|
|
122
|
+
'Generate command scripts: codehere "create service restart script"',
|
|
123
|
+
'Review system configuration: codehere "explain system configuration"',
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
// Real-time operations
|
|
127
|
+
this.unsupportedPatterns.push({
|
|
128
|
+
pattern: /\b(watch|monitor|stream|real-time|live)\b.*\b(execute|run|perform)\b/i,
|
|
129
|
+
reason: 'I cannot perform real-time monitoring or streaming operations.',
|
|
130
|
+
alternatives: [
|
|
131
|
+
'Generate monitoring code: codehere "create monitoring script"',
|
|
132
|
+
'Show monitoring patterns: codehere "explain monitoring setup"',
|
|
133
|
+
'Suggest monitoring tools: codehere ask "what monitoring tools to use"',
|
|
134
|
+
],
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Register custom unsupported pattern
|
|
139
|
+
*/
|
|
140
|
+
registerPattern(pattern, reason, alternatives) {
|
|
141
|
+
this.unsupportedPatterns.push({ pattern, reason, alternatives });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get general capability boundaries message
|
|
146
|
+
*/
|
|
147
|
+
export function getCapabilityBoundariesMessage() {
|
|
148
|
+
const content = [
|
|
149
|
+
'What I CAN do:',
|
|
150
|
+
' ✓ Answer questions about your codebase',
|
|
151
|
+
' ✓ Generate and modify code',
|
|
152
|
+
' ✓ Explain code structure and logic',
|
|
153
|
+
' ✓ Suggest improvements and refactorings',
|
|
154
|
+
' ✓ Identify potential issues',
|
|
155
|
+
'',
|
|
156
|
+
'What I CANNOT do:',
|
|
157
|
+
' ✗ Execute code or run tests directly',
|
|
158
|
+
' ✗ Connect to databases or APIs',
|
|
159
|
+
' ✗ Perform system-level operations',
|
|
160
|
+
' ✗ Guarantee code correctness',
|
|
161
|
+
' ✗ Replace thorough testing',
|
|
162
|
+
'',
|
|
163
|
+
'Always review generated code and test before deploying.',
|
|
164
|
+
].join('\n');
|
|
165
|
+
return createBox(content, { borderColor: colors.yellow });
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=capability-boundaries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-boundaries.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/capability-boundaries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive Formatter for All CLI Output
|
|
3
|
+
* Ensures consistent, well-formatted output across ALL commands and use cases
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format any text content with proper indentation, wrapping, and visual hierarchy
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatContent(content: string, options?: {
|
|
9
|
+
indent?: number;
|
|
10
|
+
maxWidth?: number;
|
|
11
|
+
preserveFormatting?: boolean;
|
|
12
|
+
color?: (text: string) => string;
|
|
13
|
+
}): string;
|
|
14
|
+
/**
|
|
15
|
+
* Format section headers with consistent styling and color coding
|
|
16
|
+
* DELIGHTFUL UX: Enhanced color coding for better visual hierarchy
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatSectionHeader(title: string, level?: 1 | 2 | 3): string;
|
|
19
|
+
/**
|
|
20
|
+
* Format numbered lists with proper indentation
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatNumberedList(items: string[], indent?: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* Format bullet lists with proper indentation
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Format bullet list with enhanced color coding and spacing
|
|
28
|
+
* DELIGHTFUL UX: Consistent bullet styling with proper spacing and color
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatBulletList(items: string[], indent?: number): string;
|
|
31
|
+
/**
|
|
32
|
+
* Format reflection/learning content with proper structure
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatReflection(reflection: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Format code blocks with proper borders and syntax highlighting
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatCodeBlock(code: string, language?: string, filepath?: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Format table data with consistent styling
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatTableData(rows: string[][]): string;
|
|
43
|
+
/**
|
|
44
|
+
* Format metadata/summary information
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatMetadata(metadata: Record<string, string | number>): string;
|
|
47
|
+
/**
|
|
48
|
+
* Format error messages with proper structure
|
|
49
|
+
*/
|
|
50
|
+
export declare function formatErrorMessage(error: string, suggestions?: string[]): string;
|
|
51
|
+
/**
|
|
52
|
+
* Format success messages
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatSuccessMessage(message: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Format warning messages
|
|
57
|
+
*/
|
|
58
|
+
export declare function formatWarningMessage(message: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* Format info messages
|
|
61
|
+
*/
|
|
62
|
+
export declare function formatInfoMessage(message: string): string;
|
|
63
|
+
//# sourceMappingURL=comprehensive-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comprehensive-formatter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ux/comprehensive-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7B,GACL,MAAM,CAmCR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,GAAG,CAAC,GAAG,CAAK,GAAG,MAAM,CAc/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAY9E;AAED;;GAEG;AACH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAe5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAsD3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CASxD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAMhF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAahF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive Formatter for All CLI Output
|
|
3
|
+
* Ensures consistent, well-formatted output across ALL commands and use cases
|
|
4
|
+
*/
|
|
5
|
+
import { colors } from '../../ui.js';
|
|
6
|
+
import { formatResponse } from '../../formatter.js';
|
|
7
|
+
/**
|
|
8
|
+
* Format any text content with proper indentation, wrapping, and visual hierarchy
|
|
9
|
+
*/
|
|
10
|
+
export function formatContent(content, options = {}) {
|
|
11
|
+
const { indent = 0, maxWidth = 76, // 80 - 4 for default indent
|
|
12
|
+
preserveFormatting = false, color = (text) => text, } = options;
|
|
13
|
+
if (!content || !content.trim()) {
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
// First, format markdown if not preserving
|
|
17
|
+
let formatted = preserveFormatting ? content : formatResponse(content, maxWidth);
|
|
18
|
+
// Split into lines
|
|
19
|
+
const lines = formatted.split('\n');
|
|
20
|
+
const indentStr = ' '.repeat(indent);
|
|
21
|
+
const result = [];
|
|
22
|
+
for (const line of lines) {
|
|
23
|
+
const trimmed = line.trim();
|
|
24
|
+
if (!trimmed) {
|
|
25
|
+
// Empty line - preserve spacing but avoid multiple consecutive
|
|
26
|
+
if (result.length === 0 || result[result.length - 1] !== '') {
|
|
27
|
+
result.push('');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Apply indentation and color
|
|
32
|
+
result.push(indentStr + color(trimmed));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result.join('\n');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Format section headers with consistent styling and color coding
|
|
39
|
+
* DELIGHTFUL UX: Enhanced color coding for better visual hierarchy
|
|
40
|
+
*/
|
|
41
|
+
export function formatSectionHeader(title, level = 1) {
|
|
42
|
+
switch (level) {
|
|
43
|
+
case 1:
|
|
44
|
+
// Level 1: Cyan bold for major sections (with spacing)
|
|
45
|
+
return '\n' + colors.bold.cyan(title) + '\n' + colors.dim('─'.repeat(Math.min(title.length, 60))) + '\n';
|
|
46
|
+
case 2:
|
|
47
|
+
// Level 2: Blue bold for subsections
|
|
48
|
+
return '\n' + colors.bold.blue(title) + '\n';
|
|
49
|
+
case 3:
|
|
50
|
+
// Level 3: Regular bold for minor sections
|
|
51
|
+
return colors.bold(title);
|
|
52
|
+
default:
|
|
53
|
+
return colors.bold(title);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Format numbered lists with proper indentation
|
|
58
|
+
*/
|
|
59
|
+
export function formatNumberedList(items, indent = 2) {
|
|
60
|
+
return items
|
|
61
|
+
.map((item, index) => {
|
|
62
|
+
const num = `${index + 1}.`;
|
|
63
|
+
const indentStr = ' '.repeat(indent);
|
|
64
|
+
const formattedItem = formatContent(item, {
|
|
65
|
+
indent: indent + num.length + 1,
|
|
66
|
+
maxWidth: 76 - indent - num.length - 1,
|
|
67
|
+
});
|
|
68
|
+
return `${indentStr}${colors.bold(num)} ${formattedItem.split('\n').join('\n' + ' '.repeat(indent + num.length + 1))}`;
|
|
69
|
+
})
|
|
70
|
+
.join('\n\n');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Format bullet lists with proper indentation
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* Format bullet list with enhanced color coding and spacing
|
|
77
|
+
* DELIGHTFUL UX: Consistent bullet styling with proper spacing and color
|
|
78
|
+
*/
|
|
79
|
+
export function formatBulletList(items, indent = 2) {
|
|
80
|
+
return items
|
|
81
|
+
.map((item, index) => {
|
|
82
|
+
const indentStr = ' '.repeat(indent);
|
|
83
|
+
// Use cyan bullet for visual consistency and delight
|
|
84
|
+
const bullet = colors.cyan('•');
|
|
85
|
+
const formattedItem = formatContent(item, {
|
|
86
|
+
indent: indent + 2,
|
|
87
|
+
maxWidth: 76 - indent - 2,
|
|
88
|
+
});
|
|
89
|
+
// Add proper spacing between items
|
|
90
|
+
const spacing = index > 0 ? '\n' : '';
|
|
91
|
+
return `${spacing}${indentStr}${bullet} ${formattedItem.split('\n').join('\n' + ' '.repeat(indent + 2))}`;
|
|
92
|
+
})
|
|
93
|
+
.join('\n');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format reflection/learning content with proper structure
|
|
97
|
+
*/
|
|
98
|
+
export function formatReflection(reflection) {
|
|
99
|
+
if (!reflection || !reflection.trim()) {
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
// Remove redundant "Reflection:" header
|
|
103
|
+
let cleaned = reflection.trim();
|
|
104
|
+
cleaned = cleaned.replace(/^Reflection:\s*/i, '');
|
|
105
|
+
cleaned = cleaned.replace(/^\*\*Reflection:\*\*\s*/i, '');
|
|
106
|
+
// Format the content
|
|
107
|
+
const formatted = formatResponse(cleaned, 76);
|
|
108
|
+
const lines = formatted.split('\n');
|
|
109
|
+
const result = [];
|
|
110
|
+
let lastWasEmpty = false;
|
|
111
|
+
for (let i = 0; i < lines.length; i++) {
|
|
112
|
+
const line = lines[i];
|
|
113
|
+
const trimmed = line.trim();
|
|
114
|
+
// Skip redundant "Reflection:" header
|
|
115
|
+
if (trimmed.toLowerCase() === 'reflection:' || trimmed.toLowerCase().startsWith('reflection:')) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (!trimmed) {
|
|
119
|
+
// Empty line - add spacing but avoid multiple consecutive
|
|
120
|
+
if (!lastWasEmpty && result.length > 0) {
|
|
121
|
+
result.push('');
|
|
122
|
+
lastWasEmpty = true;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
lastWasEmpty = false;
|
|
127
|
+
// Detect section headers (numbered with capital letter)
|
|
128
|
+
const isNumberedHeader = /^\d+\.\s+[A-Z]/.test(trimmed);
|
|
129
|
+
if (isNumberedHeader) {
|
|
130
|
+
// Section header - add spacing before and make it stand out
|
|
131
|
+
if (i > 0 && lines[i - 1].trim()) {
|
|
132
|
+
result.push('');
|
|
133
|
+
}
|
|
134
|
+
result.push(' ' + colors.bold.cyan(trimmed));
|
|
135
|
+
}
|
|
136
|
+
else if (trimmed.startsWith('•') || /^\d+\./.test(trimmed)) {
|
|
137
|
+
// List item - indent properly
|
|
138
|
+
result.push(' ' + trimmed);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Regular text - indent and wrap
|
|
142
|
+
result.push(' ' + trimmed);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return result.join('\n');
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Format code blocks with proper borders and syntax highlighting
|
|
150
|
+
*/
|
|
151
|
+
export function formatCodeBlock(code, language, filepath) {
|
|
152
|
+
// Use existing formatter
|
|
153
|
+
const { formatCodeBlock: formatCode } = require('../../formatter.js');
|
|
154
|
+
return formatCode(code, language, filepath);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Format table data with consistent styling
|
|
158
|
+
*/
|
|
159
|
+
export function formatTableData(rows) {
|
|
160
|
+
return rows
|
|
161
|
+
.map((row) => {
|
|
162
|
+
return row.map((cell, idx) => {
|
|
163
|
+
// First column: bold, others: normal
|
|
164
|
+
return idx === 0 ? colors.bold(cell) : cell;
|
|
165
|
+
}).join(' ');
|
|
166
|
+
})
|
|
167
|
+
.join('\n');
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Format metadata/summary information
|
|
171
|
+
*/
|
|
172
|
+
export function formatMetadata(metadata) {
|
|
173
|
+
const lines = [];
|
|
174
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
175
|
+
lines.push(` ${colors.dim(key + ':')} ${String(value)}`);
|
|
176
|
+
}
|
|
177
|
+
return lines.join('\n');
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Format error messages with proper structure
|
|
181
|
+
*/
|
|
182
|
+
export function formatErrorMessage(error, suggestions) {
|
|
183
|
+
const parts = [];
|
|
184
|
+
parts.push(colors.red('Error: ' + error));
|
|
185
|
+
if (suggestions && suggestions.length > 0) {
|
|
186
|
+
parts.push('');
|
|
187
|
+
parts.push(colors.bold('Suggestions:'));
|
|
188
|
+
suggestions.forEach((suggestion) => {
|
|
189
|
+
parts.push(' • ' + suggestion);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return parts.join('\n');
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Format success messages
|
|
196
|
+
*/
|
|
197
|
+
export function formatSuccessMessage(message) {
|
|
198
|
+
return colors.green('✓ ' + message);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Format warning messages
|
|
202
|
+
*/
|
|
203
|
+
export function formatWarningMessage(message) {
|
|
204
|
+
return colors.yellow('⚠ ' + message);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Format info messages
|
|
208
|
+
*/
|
|
209
|
+
export function formatInfoMessage(message) {
|
|
210
|
+
return colors.blue('→ ' + message);
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=comprehensive-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comprehensive-formatter.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/comprehensive-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,UAKI,EAAE;IAEN,MAAM,EACJ,MAAM,GAAG,CAAC,EACV,QAAQ,GAAG,EAAE,EAAE,4BAA4B;IAC3C,kBAAkB,GAAG,KAAK,EAC1B,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,GAC/B,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEjF,mBAAmB;IACnB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,+DAA+D;YAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAmB,CAAC;IACrE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,CAAC;YACJ,uDAAuD;YACvD,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC3G,KAAK,CAAC;YACJ,qCAAqC;YACrC,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC/C,KAAK,CAAC;YACJ,2CAA2C;YAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B;YACE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAe,EAAE,SAAiB,CAAC;IACpE,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;QAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE;YACxC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;YAC/B,QAAQ,EAAE,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;SACvC,CAAC,CAAC;QACH,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACzH,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,SAAiB,CAAC;IAClE,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE;YACxC,MAAM,EAAE,MAAM,GAAG,CAAC;YAClB,QAAQ,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC;SAC1B,CAAC,CAAC;QACH,mCAAmC;QACnC,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5G,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,wCAAwC;IACxC,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IAE1D,qBAAqB;IACrB,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,sCAAsC;QACtC,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/F,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,0DAA0D;YAC1D,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,KAAK,CAAC;YAErB,wDAAwD;YACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,4DAA4D;gBAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,8BAA8B;gBAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,iCAAiC;gBACjC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAiB,EAAE,QAAiB;IAChF,yBAAyB;IACzB,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,qCAAqC;YACrC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAyC;IACtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,WAAsB;IACtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IAE1C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contextual Feature Discovery
|
|
3
|
+
* Shows relevant features based on user queries and context - Task 2.2
|
|
4
|
+
*/
|
|
5
|
+
export interface ContextualSuggestion {
|
|
6
|
+
feature: string;
|
|
7
|
+
description: string;
|
|
8
|
+
command: string;
|
|
9
|
+
reason: string;
|
|
10
|
+
confidence: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Analyze query to suggest contextual features
|
|
14
|
+
*/
|
|
15
|
+
export declare function getContextualSuggestions(query: string): ContextualSuggestion[];
|
|
16
|
+
/**
|
|
17
|
+
* Get contextual feature suggestions based on query limitations
|
|
18
|
+
*/
|
|
19
|
+
export declare function getSuggestionsForLimitation(limitation: string, currentCommand: string): ContextualSuggestion[];
|
|
20
|
+
/**
|
|
21
|
+
* Check if contextual suggestions should be shown
|
|
22
|
+
*/
|
|
23
|
+
export declare function shouldShowContextualSuggestion(query: string, currentCommand: string): ContextualSuggestion | null;
|
|
24
|
+
//# sourceMappingURL=contextual-feature-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextual-feature-discovery.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ux/contextual-feature-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAsH9E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,oBAAoB,EAAE,CA2BxB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,GACrB,oBAAoB,GAAG,IAAI,CAS7B"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contextual Feature Discovery
|
|
3
|
+
* Shows relevant features based on user queries and context - Task 2.2
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Analyze query to suggest contextual features
|
|
7
|
+
*/
|
|
8
|
+
export function getContextualSuggestions(query) {
|
|
9
|
+
const suggestions = [];
|
|
10
|
+
const queryLower = query.toLowerCase();
|
|
11
|
+
// Multi-file operations → suggest orchestrate
|
|
12
|
+
if ((queryLower.includes('multiple') || queryLower.includes('several') || queryLower.includes('all')) &&
|
|
13
|
+
(queryLower.includes('file') || queryLower.includes('module'))) {
|
|
14
|
+
suggestions.push({
|
|
15
|
+
feature: 'Multi-agent Orchestration',
|
|
16
|
+
description: 'Plan and execute complex multi-step tasks across multiple files',
|
|
17
|
+
command: 'codehere orchestrate "your goal"',
|
|
18
|
+
reason: 'Your query involves multiple files/modules',
|
|
19
|
+
confidence: 0.8,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
// Complex refactoring → suggest plan
|
|
23
|
+
if (queryLower.includes('refactor') &&
|
|
24
|
+
(queryLower.includes('large') || queryLower.includes('complex') || queryLower.includes('multiple'))) {
|
|
25
|
+
suggestions.push({
|
|
26
|
+
feature: 'Planning Mode',
|
|
27
|
+
description: 'Generate hierarchical plans for large refactoring tasks',
|
|
28
|
+
command: 'codehere plan "refactor goal"',
|
|
29
|
+
reason: 'Complex refactoring tasks benefit from structured planning',
|
|
30
|
+
confidence: 0.9,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Debugging/problem solving → suggest react
|
|
34
|
+
if (queryLower.includes('debug') ||
|
|
35
|
+
queryLower.includes('fix') ||
|
|
36
|
+
queryLower.includes('error') ||
|
|
37
|
+
queryLower.includes('issue') ||
|
|
38
|
+
queryLower.includes('problem') ||
|
|
39
|
+
queryLower.includes('why') ||
|
|
40
|
+
queryLower.includes('why is')) {
|
|
41
|
+
suggestions.push({
|
|
42
|
+
feature: 'ReAct Reasoning',
|
|
43
|
+
description: 'Debug and solve complex problems step-by-step with reasoning',
|
|
44
|
+
command: 'codehere react "your problem"',
|
|
45
|
+
reason: 'Step-by-step reasoning helps with debugging',
|
|
46
|
+
confidence: 0.85,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Security-related → suggest security commands
|
|
50
|
+
if (queryLower.includes('security') ||
|
|
51
|
+
queryLower.includes('vulnerability') ||
|
|
52
|
+
queryLower.includes('vulnerabilities') ||
|
|
53
|
+
queryLower.includes('secure') ||
|
|
54
|
+
queryLower.includes('audit')) {
|
|
55
|
+
suggestions.push({
|
|
56
|
+
feature: 'Security Scanning',
|
|
57
|
+
description: 'Codehere automatically scans for security issues. Use edit command to fix them.',
|
|
58
|
+
command: 'codehere "fix security issues in auth.ts"',
|
|
59
|
+
reason: 'Security-focused queries benefit from comprehensive scanning',
|
|
60
|
+
confidence: 0.9,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// Knowledge/documentation → suggest knowledge commands
|
|
64
|
+
if (queryLower.includes('document') ||
|
|
65
|
+
queryLower.includes('knowledge') ||
|
|
66
|
+
queryLower.includes('learn') ||
|
|
67
|
+
queryLower.includes('pattern') ||
|
|
68
|
+
queryLower.includes('remember')) {
|
|
69
|
+
suggestions.push({
|
|
70
|
+
feature: 'Knowledge Management',
|
|
71
|
+
description: 'Query and manage preserved knowledge about your codebase',
|
|
72
|
+
command: 'codehere knowledge query "your query"',
|
|
73
|
+
reason: 'Knowledge management helps with documentation and learning',
|
|
74
|
+
confidence: 0.8,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Performance optimization → suggest trace/learning
|
|
78
|
+
if (queryLower.includes('performance') ||
|
|
79
|
+
queryLower.includes('optimize') ||
|
|
80
|
+
queryLower.includes('slow') ||
|
|
81
|
+
queryLower.includes('faster')) {
|
|
82
|
+
suggestions.push({
|
|
83
|
+
feature: 'Execution Tracing',
|
|
84
|
+
description: 'Analyze execution patterns to understand performance',
|
|
85
|
+
command: 'codehere trace list',
|
|
86
|
+
reason: 'Tracing helps identify performance bottlenecks',
|
|
87
|
+
confidence: 0.75,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// Configuration/setup → suggest config commands
|
|
91
|
+
if (queryLower.includes('config') ||
|
|
92
|
+
queryLower.includes('setting') ||
|
|
93
|
+
queryLower.includes('preference') ||
|
|
94
|
+
queryLower.includes('setup')) {
|
|
95
|
+
suggestions.push({
|
|
96
|
+
feature: 'Configuration Management',
|
|
97
|
+
description: 'Manage preferences and settings',
|
|
98
|
+
command: 'codehere config',
|
|
99
|
+
reason: 'Configuration queries can be handled directly',
|
|
100
|
+
confidence: 0.95,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return suggestions.sort((a, b) => b.confidence - a.confidence); // Sort by confidence
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get contextual feature suggestions based on query limitations
|
|
107
|
+
*/
|
|
108
|
+
export function getSuggestionsForLimitation(limitation, currentCommand) {
|
|
109
|
+
const suggestions = [];
|
|
110
|
+
const limitationLower = limitation.toLowerCase();
|
|
111
|
+
// If limitation mentions multi-file, suggest orchestrate
|
|
112
|
+
if (limitationLower.includes('multi-file') || limitationLower.includes('multiple files')) {
|
|
113
|
+
suggestions.push({
|
|
114
|
+
feature: 'Multi-agent Orchestration',
|
|
115
|
+
description: 'Handle complex multi-file operations with planning',
|
|
116
|
+
command: 'codehere orchestrate "your goal"',
|
|
117
|
+
reason: 'Orchestrate mode handles multi-file operations better',
|
|
118
|
+
confidence: 0.9,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// If limitation mentions complexity, suggest plan
|
|
122
|
+
if (limitationLower.includes('complex') || limitationLower.includes('complicated')) {
|
|
123
|
+
suggestions.push({
|
|
124
|
+
feature: 'Planning Mode',
|
|
125
|
+
description: 'Break down complex tasks into manageable steps',
|
|
126
|
+
command: 'codehere plan "your goal"',
|
|
127
|
+
reason: 'Planning mode helps with complex tasks',
|
|
128
|
+
confidence: 0.85,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return suggestions;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if contextual suggestions should be shown
|
|
135
|
+
*/
|
|
136
|
+
export function shouldShowContextualSuggestion(query, currentCommand) {
|
|
137
|
+
const suggestions = getContextualSuggestions(query);
|
|
138
|
+
// Only show top suggestion if confidence is high enough
|
|
139
|
+
if (suggestions.length > 0 && suggestions[0].confidence >= 0.75) {
|
|
140
|
+
return suggestions[0];
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=contextual-feature-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextual-feature-discovery.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/contextual-feature-discovery.ts"],"names":[],"mappings":"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"}
|