codehere 0.1.1 → 0.2.1
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/README.md +68 -329
- package/dist/application/agents/execution-agent.js +4 -30
- package/dist/application/agents/multi-agent-orchestrator.js +0 -1
- package/dist/application/agents/planning-agent.js +79 -199
- package/dist/application/services/dependency-container.js +9 -20
- package/dist/application/services/intelligent-router.js +56 -64
- package/dist/application/use-cases/ask-question-use-case.js +22 -121
- package/dist/application/use-cases/edit-file-use-case.js +171 -160
- package/dist/application/use-cases/react-orchestration-use-case.js +10 -43
- package/dist/chat.js +130 -54
- package/dist/domain/services/query-intent-classifier.js +3 -36
- package/dist/embed.js +61 -74
- package/dist/index.js +1299 -259
- package/dist/infrastructure/ai/cohere-ai-service.js +9 -78
- package/dist/infrastructure/ai/provider-ai-service.js +18 -121
- package/dist/infrastructure/config/config-manager.js +14 -135
- package/dist/infrastructure/config/product-context.js +66 -0
- package/dist/infrastructure/context/conversation-context.js +1 -86
- package/dist/infrastructure/cost/cost-router.js +104 -0
- package/dist/infrastructure/cost/cost-tracker.js +2 -3
- package/dist/infrastructure/governance/policy-as-code.js +2 -1
- package/dist/infrastructure/hooks/claude-sdk-hook.js +253 -0
- package/dist/infrastructure/hooks/session-analyzer.js +111 -0
- package/dist/infrastructure/observability/execution-tracer.js +7 -180
- package/dist/infrastructure/protocols/mcp-helpers.js +45 -0
- package/dist/infrastructure/protocols/mcp-server-impl.js +286 -0
- package/dist/infrastructure/providers/cohere-provider.js +5 -31
- package/dist/infrastructure/providers/fake-provider.js +0 -8
- package/dist/infrastructure/providers/local-llm-provider.js +2 -8
- package/dist/infrastructure/providers/openai-provider.js +5 -37
- package/dist/infrastructure/providers/openrouter-provider.js +3 -11
- package/dist/infrastructure/safety/pattern-detector.js +133 -0
- package/dist/infrastructure/security/ai-sast-scanner.js +62 -13
- package/dist/infrastructure/security/enhanced-security-gate.js +2 -61
- package/dist/infrastructure/security/input-validator.js +29 -146
- package/dist/infrastructure/security/trust-scorer.js +337 -0
- package/dist/infrastructure/storage/embeddings-path.js +4 -14
- package/dist/infrastructure/storage/plan-repository.js +5 -4
- package/dist/infrastructure/storage/sqlite-decision-repository.js +8 -4
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +11 -23
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +8 -4
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +8 -4
- package/dist/infrastructure/storage/sqlite-memory-repository.js +8 -4
- package/dist/infrastructure/storage/sqlite-pattern-repository.js +8 -4
- package/dist/infrastructure/ux/stream-markdown.js +151 -0
- package/dist/infrastructure/ux/transparency.js +71 -0
- package/dist/infrastructure/validation/agent-feedback.js +12 -57
- package/dist/monitoring.js +4 -3
- package/dist/parallel-processor.js +42 -118
- package/dist/presentation/cli/commands/ask-command.js +39 -80
- package/dist/presentation/cli/commands/config-command.js +1 -1
- package/dist/presentation/cli/commands/cost-command.js +6 -6
- package/dist/presentation/cli/commands/decision-command.js +5 -5
- package/dist/presentation/cli/commands/fix-command.js +4 -44
- package/dist/presentation/cli/commands/help-command.js +151 -100
- package/dist/presentation/cli/commands/hook-command.js +272 -0
- package/dist/presentation/cli/commands/knowledge-command.js +4 -4
- package/dist/presentation/cli/commands/learning-dashboard-command.js +3 -3
- package/dist/presentation/cli/commands/orchestrate-command.js +6 -48
- package/dist/presentation/cli/commands/plan-command.js +1 -1
- package/dist/presentation/cli/commands/product-command.js +193 -16
- package/dist/presentation/cli/commands/report-command.js +353 -0
- package/dist/presentation/cli/commands/run-command.js +3 -3
- package/dist/presentation/cli/commands/scan-tool-command.js +65 -0
- package/dist/presentation/cli/commands/setup-command.js +34 -81
- package/dist/presentation/cli/commands/smart-command.js +50 -172
- package/dist/presentation/cli/commands/status-command.js +304 -119
- package/dist/presentation/cli/commands/trust-command.js +263 -274
- package/dist/presentation/cli/commands/undo-command.js +2 -2
- package/dist/search.js +37 -67
- package/dist/session.js +549 -490
- package/dist/task-verification.js +4 -4
- package/dist/token-optimizer.js +1 -6
- package/dist/ui.js +126 -15
- package/dist/utils/check-api-status.js +30 -12
- package/dist/utils/diff-parser.js +18 -48
- package/dist/verification/compiler.js +12 -11
- package/package.json +24 -37
- package/dist/agents/base.d.ts +0 -107
- package/dist/agents/base.d.ts.map +0 -1
- package/dist/agents/base.js.map +0 -1
- package/dist/agents/orchestrator-model-driven.d.ts +0 -41
- package/dist/agents/orchestrator-model-driven.d.ts.map +0 -1
- package/dist/agents/orchestrator-model-driven.js.map +0 -1
- package/dist/agents/react-orchestrator-agent.d.ts +0 -15
- package/dist/agents/react-orchestrator-agent.d.ts.map +0 -1
- package/dist/agents/react-orchestrator-agent.js.map +0 -1
- package/dist/application/agents/execution-agent.d.ts +0 -79
- package/dist/application/agents/execution-agent.d.ts.map +0 -1
- package/dist/application/agents/execution-agent.js.map +0 -1
- package/dist/application/agents/multi-agent-orchestrator.d.ts +0 -69
- package/dist/application/agents/multi-agent-orchestrator.d.ts.map +0 -1
- package/dist/application/agents/multi-agent-orchestrator.js.map +0 -1
- package/dist/application/agents/planning-agent.d.ts +0 -65
- package/dist/application/agents/planning-agent.d.ts.map +0 -1
- package/dist/application/agents/planning-agent.js.map +0 -1
- package/dist/application/agents/validation-agent.d.ts +0 -68
- package/dist/application/agents/validation-agent.d.ts.map +0 -1
- package/dist/application/agents/validation-agent.js.map +0 -1
- package/dist/application/architectures/plan-and-act.d.ts +0 -94
- package/dist/application/architectures/plan-and-act.d.ts.map +0 -1
- package/dist/application/architectures/plan-and-act.js.map +0 -1
- package/dist/application/index.d.ts +0 -12
- package/dist/application/index.d.ts.map +0 -1
- package/dist/application/index.js.map +0 -1
- package/dist/application/services/agent-factory.d.ts +0 -9
- package/dist/application/services/agent-factory.d.ts.map +0 -1
- package/dist/application/services/agent-factory.js.map +0 -1
- package/dist/application/services/context-importer.d.ts +0 -71
- package/dist/application/services/context-importer.d.ts.map +0 -1
- package/dist/application/services/context-importer.js +0 -436
- package/dist/application/services/context-importer.js.map +0 -1
- package/dist/application/services/context-manager.d.ts +0 -132
- package/dist/application/services/context-manager.d.ts.map +0 -1
- package/dist/application/services/context-manager.js +0 -369
- package/dist/application/services/context-manager.js.map +0 -1
- package/dist/application/services/dependency-container.d.ts +0 -187
- package/dist/application/services/dependency-container.d.ts.map +0 -1
- package/dist/application/services/dependency-container.js.map +0 -1
- package/dist/application/services/git-context-service.d.ts +0 -30
- package/dist/application/services/git-context-service.d.ts.map +0 -1
- package/dist/application/services/git-context-service.js.map +0 -1
- package/dist/application/services/intelligent-router.d.ts +0 -90
- package/dist/application/services/intelligent-router.d.ts.map +0 -1
- package/dist/application/services/intelligent-router.js.map +0 -1
- package/dist/application/services/token-counting-service.d.ts +0 -87
- package/dist/application/services/token-counting-service.d.ts.map +0 -1
- package/dist/application/services/token-counting-service.js +0 -196
- package/dist/application/services/token-counting-service.js.map +0 -1
- package/dist/application/services/tool-executor-service.d.ts +0 -14
- package/dist/application/services/tool-executor-service.d.ts.map +0 -1
- package/dist/application/services/tool-executor-service.js.map +0 -1
- package/dist/application/use-cases/ask-question-use-case.d.ts +0 -67
- package/dist/application/use-cases/ask-question-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/ask-question-use-case.js.map +0 -1
- package/dist/application/use-cases/edit-file-use-case.d.ts +0 -92
- package/dist/application/use-cases/edit-file-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/edit-file-use-case.js.map +0 -1
- package/dist/application/use-cases/explain-file-use-case.d.ts +0 -21
- package/dist/application/use-cases/explain-file-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/explain-file-use-case.js.map +0 -1
- package/dist/application/use-cases/index-codebase-use-case.d.ts +0 -46
- package/dist/application/use-cases/index-codebase-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/index-codebase-use-case.js.map +0 -1
- package/dist/application/use-cases/planning-use-case.d.ts +0 -46
- package/dist/application/use-cases/planning-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/planning-use-case.js.map +0 -1
- package/dist/application/use-cases/react-orchestration-use-case.d.ts +0 -51
- package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/react-orchestration-use-case.js.map +0 -1
- package/dist/application/use-cases/reflexion-use-case.d.ts +0 -24
- package/dist/application/use-cases/reflexion-use-case.d.ts.map +0 -1
- package/dist/application/use-cases/reflexion-use-case.js.map +0 -1
- package/dist/application/workflows/deterministic-workflows.d.ts +0 -61
- package/dist/application/workflows/deterministic-workflows.d.ts.map +0 -1
- package/dist/application/workflows/deterministic-workflows.js.map +0 -1
- package/dist/ast-parser.d 2.ts +0 -55
- package/dist/ast-parser.d.ts +0 -55
- package/dist/ast-parser.d.ts.map +0 -1
- package/dist/ast-parser.js.map +0 -1
- package/dist/cache.d.ts +0 -45
- package/dist/cache.d.ts.map +0 -1
- package/dist/cache.js.map +0 -1
- package/dist/chat.d.ts +0 -4
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js.map +0 -1
- package/dist/code-analysis 2.js +0 -327
- package/dist/code-analysis.d.ts +0 -50
- package/dist/code-analysis.d.ts.map +0 -1
- package/dist/code-analysis.js.map +0 -1
- package/dist/context.d.ts +0 -44
- package/dist/context.d.ts 2.map +0 -1
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js.map +0 -1
- package/dist/docs.d.ts +0 -21
- package/dist/docs.d.ts.map +0 -1
- package/dist/docs.js.map +0 -1
- package/dist/domain/entities/code-chunk.d.ts +0 -26
- package/dist/domain/entities/code-chunk.d.ts.map +0 -1
- package/dist/domain/entities/code-chunk.js.map +0 -1
- package/dist/domain/entities/conversation-context.d.ts +0 -245
- package/dist/domain/entities/conversation-context.d.ts.map +0 -1
- package/dist/domain/entities/conversation-context.js +0 -50
- package/dist/domain/entities/conversation-context.js.map +0 -1
- package/dist/domain/entities/decision.d.ts +0 -37
- package/dist/domain/entities/decision.d.ts.map +0 -1
- package/dist/domain/entities/decision.js.map +0 -1
- package/dist/domain/entities/edit.d.ts +0 -35
- package/dist/domain/entities/edit.d.ts.map +0 -1
- package/dist/domain/entities/edit.js.map +0 -1
- package/dist/domain/entities/knowledge-node.d.ts +0 -83
- package/dist/domain/entities/knowledge-node.d.ts.map +0 -1
- package/dist/domain/entities/knowledge-node.js.map +0 -1
- package/dist/domain/entities/knowledge-preservation.d.ts +0 -42
- package/dist/domain/entities/knowledge-preservation.d.ts.map +0 -1
- package/dist/domain/entities/knowledge-preservation.js.map +0 -1
- package/dist/domain/entities/memory.d.ts +0 -36
- package/dist/domain/entities/memory.d.ts.map +0 -1
- package/dist/domain/entities/memory.js.map +0 -1
- package/dist/domain/entities/pattern.d.ts +0 -49
- package/dist/domain/entities/pattern.d.ts.map +0 -1
- package/dist/domain/entities/pattern.js.map +0 -1
- package/dist/domain/entities/plan.d.ts +0 -42
- package/dist/domain/entities/plan.d.ts.map +0 -1
- package/dist/domain/entities/plan.js.map +0 -1
- package/dist/domain/entities/query.d.ts +0 -17
- package/dist/domain/entities/query.d.ts.map +0 -1
- package/dist/domain/entities/query.js.map +0 -1
- package/dist/domain/entities/task.d.ts +0 -152
- package/dist/domain/entities/task.d.ts.map +0 -1
- package/dist/domain/entities/task.js.map +0 -1
- package/dist/domain/errors/embeddings-not-found-error.d.ts +0 -9
- package/dist/domain/errors/embeddings-not-found-error.d.ts.map +0 -1
- package/dist/domain/errors/embeddings-not-found-error.js.map +0 -1
- package/dist/domain/index.d.ts +0 -16
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js.map +0 -1
- package/dist/domain/interfaces/ai-service.interface.d.ts +0 -72
- package/dist/domain/interfaces/ai-service.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/ai-service.interface.js.map +0 -1
- package/dist/domain/interfaces/code-analyzer.interface.d.ts +0 -38
- package/dist/domain/interfaces/code-analyzer.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/code-analyzer.interface.js.map +0 -1
- package/dist/domain/interfaces/context-repository.interface.d.ts +0 -71
- package/dist/domain/interfaces/context-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/context-repository.interface.js +0 -10
- package/dist/domain/interfaces/context-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/decision-repository.interface.d.ts +0 -51
- package/dist/domain/interfaces/decision-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/decision-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/embedding-repository.interface.d.ts +0 -33
- package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/embedding-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts +0 -91
- package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts +0 -50
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/memory-repository.interface.d.ts +0 -49
- package/dist/domain/interfaces/memory-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/memory-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/pattern-repository.interface.d.ts +0 -48
- package/dist/domain/interfaces/pattern-repository.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/pattern-repository.interface.js.map +0 -1
- package/dist/domain/interfaces/verification-service.interface.d.ts +0 -20
- package/dist/domain/interfaces/verification-service.interface.d.ts.map +0 -1
- package/dist/domain/interfaces/verification-service.interface.js.map +0 -1
- package/dist/domain/services/codebase-detector.d.ts +0 -18
- package/dist/domain/services/codebase-detector.d.ts.map +0 -1
- package/dist/domain/services/codebase-detector.js.map +0 -1
- package/dist/domain/services/cross-team-pattern-sharing.d.ts +0 -65
- package/dist/domain/services/cross-team-pattern-sharing.d.ts.map +0 -1
- package/dist/domain/services/cross-team-pattern-sharing.js.map +0 -1
- package/dist/domain/services/decision-recorder.d.ts +0 -76
- package/dist/domain/services/decision-recorder.d.ts.map +0 -1
- package/dist/domain/services/decision-recorder.js.map +0 -1
- package/dist/domain/services/decision-retriever.d.ts +0 -75
- package/dist/domain/services/decision-retriever.d.ts.map +0 -1
- package/dist/domain/services/decision-retriever.js.map +0 -1
- package/dist/domain/services/environment-mode-manager.d.ts +0 -12
- package/dist/domain/services/environment-mode-manager.d.ts.map +0 -1
- package/dist/domain/services/environment-mode-manager.js.map +0 -1
- package/dist/domain/services/graded-memory-activation.d.ts +0 -37
- package/dist/domain/services/graded-memory-activation.d.ts.map +0 -1
- package/dist/domain/services/graded-memory-activation.js.map +0 -1
- package/dist/domain/services/knowledge-access.d.ts +0 -63
- package/dist/domain/services/knowledge-access.d.ts.map +0 -1
- package/dist/domain/services/knowledge-access.js.map +0 -1
- package/dist/domain/services/knowledge-extractor.d.ts +0 -54
- package/dist/domain/services/knowledge-extractor.d.ts.map +0 -1
- package/dist/domain/services/knowledge-extractor.js.map +0 -1
- package/dist/domain/services/knowledge-graph-builder.d.ts +0 -70
- package/dist/domain/services/knowledge-graph-builder.d.ts.map +0 -1
- package/dist/domain/services/knowledge-graph-builder.js.map +0 -1
- package/dist/domain/services/knowledge-graph-query.d.ts +0 -69
- package/dist/domain/services/knowledge-graph-query.d.ts.map +0 -1
- package/dist/domain/services/knowledge-graph-query.js.map +0 -1
- package/dist/domain/services/memory-retriever.d.ts +0 -30
- package/dist/domain/services/memory-retriever.d.ts.map +0 -1
- package/dist/domain/services/memory-retriever.js.map +0 -1
- package/dist/domain/services/memory-synthesizer.d.ts +0 -57
- package/dist/domain/services/memory-synthesizer.d.ts.map +0 -1
- package/dist/domain/services/memory-synthesizer.js.map +0 -1
- package/dist/domain/services/pattern-extractor.d.ts +0 -108
- package/dist/domain/services/pattern-extractor.d.ts.map +0 -1
- package/dist/domain/services/pattern-extractor.js.map +0 -1
- package/dist/domain/services/query-intent-classifier.d.ts +0 -16
- package/dist/domain/services/query-intent-classifier.d.ts.map +0 -1
- package/dist/domain/services/query-intent-classifier.js.map +0 -1
- package/dist/domain/services/react-loop.d.ts +0 -52
- package/dist/domain/services/react-loop.d.ts.map +0 -1
- package/dist/domain/services/react-loop.js.map +0 -1
- package/dist/domain/services/risk-tier-detector.d.ts +0 -17
- package/dist/domain/services/risk-tier-detector.d.ts.map +0 -1
- package/dist/domain/services/risk-tier-detector.js.map +0 -1
- package/dist/edit.d.ts +0 -26
- package/dist/edit.d.ts 2.map +0 -1
- package/dist/edit.d.ts.map +0 -1
- package/dist/edit.js.map +0 -1
- package/dist/embed.d 2.ts +0 -14
- package/dist/embed.d.ts +0 -14
- package/dist/embed.d.ts.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/error-handler.d 2.ts +0 -77
- package/dist/error-handler.d.ts +0 -77
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/error-handler.js.map +0 -1
- package/dist/formatter 2.js +0 -168
- package/dist/formatter.d.ts +0 -25
- package/dist/formatter.d.ts 2.map +0 -1
- package/dist/formatter.d.ts.map +0 -1
- package/dist/formatter.js.map +0 -1
- package/dist/git 2.js +0 -198
- package/dist/git.d 2.ts +0 -55
- package/dist/git.d.ts +0 -55
- package/dist/git.d.ts.map +0 -1
- package/dist/git.js.map +0 -1
- package/dist/index 2.d.ts +0 -16
- package/dist/index 2.d.ts.map +0 -1
- package/dist/index 2.js +0 -429
- package/dist/index 2.js.map +0 -1
- package/dist/index-backup-before-lazy-loading.d.ts +0 -3
- package/dist/index-backup-before-lazy-loading.d.ts.map +0 -1
- package/dist/index-backup-before-lazy-loading.js +0 -1551
- package/dist/index-backup-before-lazy-loading.js.map +0 -1
- package/dist/index.d.ts +0 -16
- package/dist/index.d.ts 2.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js 2.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/infrastructure/ai/cohere-ai-service.d.ts +0 -71
- package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +0 -1
- package/dist/infrastructure/ai/cohere-ai-service.js.map +0 -1
- package/dist/infrastructure/ai/command-r-evaluation.d.ts +0 -42
- package/dist/infrastructure/ai/command-r-evaluation.d.ts.map +0 -1
- package/dist/infrastructure/ai/command-r-evaluation.js.map +0 -1
- package/dist/infrastructure/ai/model-config.d.ts +0 -47
- package/dist/infrastructure/ai/model-config.d.ts.map +0 -1
- package/dist/infrastructure/ai/model-config.js.map +0 -1
- package/dist/infrastructure/ai/provider-ai-service.d.ts +0 -67
- package/dist/infrastructure/ai/provider-ai-service.d.ts.map +0 -1
- package/dist/infrastructure/ai/provider-ai-service.js.map +0 -1
- package/dist/infrastructure/cache/embedding-cache.d.ts +0 -58
- package/dist/infrastructure/cache/embedding-cache.d.ts.map +0 -1
- package/dist/infrastructure/cache/embedding-cache.js.map +0 -1
- package/dist/infrastructure/cache/query-result-cache.d.ts +0 -27
- package/dist/infrastructure/cache/query-result-cache.d.ts.map +0 -1
- package/dist/infrastructure/cache/query-result-cache.js.map +0 -1
- package/dist/infrastructure/cache/response-cache.d.ts +0 -18
- package/dist/infrastructure/cache/response-cache.d.ts.map +0 -1
- package/dist/infrastructure/cache/response-cache.js.map +0 -1
- package/dist/infrastructure/cache/security-scan-cache.d.ts +0 -16
- package/dist/infrastructure/cache/security-scan-cache.d.ts.map +0 -1
- package/dist/infrastructure/cache/security-scan-cache.js.map +0 -1
- package/dist/infrastructure/chunking/ast-code-chunker.d.ts +0 -12
- package/dist/infrastructure/chunking/ast-code-chunker.d.ts.map +0 -1
- package/dist/infrastructure/chunking/ast-code-chunker.js.map +0 -1
- package/dist/infrastructure/chunking/code-aware-chunker.d.ts +0 -63
- package/dist/infrastructure/chunking/code-aware-chunker.d.ts.map +0 -1
- package/dist/infrastructure/chunking/code-aware-chunker.js.map +0 -1
- package/dist/infrastructure/completion/bash-completion.d.ts +0 -7
- package/dist/infrastructure/completion/bash-completion.d.ts.map +0 -1
- package/dist/infrastructure/completion/bash-completion.js.map +0 -1
- package/dist/infrastructure/completion/fish-completion.d.ts +0 -7
- package/dist/infrastructure/completion/fish-completion.d.ts.map +0 -1
- package/dist/infrastructure/completion/fish-completion.js.map +0 -1
- package/dist/infrastructure/completion/zsh-completion.d.ts +0 -7
- package/dist/infrastructure/completion/zsh-completion.d.ts.map +0 -1
- package/dist/infrastructure/completion/zsh-completion.js.map +0 -1
- package/dist/infrastructure/config/config-manager.d.ts +0 -158
- package/dist/infrastructure/config/config-manager.d.ts.map +0 -1
- package/dist/infrastructure/config/config-manager.js.map +0 -1
- package/dist/infrastructure/context/context-compressor.d.ts +0 -94
- package/dist/infrastructure/context/context-compressor.d.ts.map +0 -1
- package/dist/infrastructure/context/context-compressor.js.map +0 -1
- package/dist/infrastructure/context/conversation-context.d.ts +0 -82
- package/dist/infrastructure/context/conversation-context.d.ts.map +0 -1
- package/dist/infrastructure/context/conversation-context.js.map +0 -1
- package/dist/infrastructure/context/direct-context-provider.d.ts +0 -18
- package/dist/infrastructure/context/direct-context-provider.d.ts.map +0 -1
- package/dist/infrastructure/context/direct-context-provider.js +0 -222
- package/dist/infrastructure/context/direct-context-provider.js.map +0 -1
- package/dist/infrastructure/context/git-context-provider.d.ts +0 -30
- package/dist/infrastructure/context/git-context-provider.d.ts.map +0 -1
- package/dist/infrastructure/context/git-context-provider.js +0 -140
- package/dist/infrastructure/context/git-context-provider.js.map +0 -1
- package/dist/infrastructure/context/project-context-loader.d.ts +0 -35
- package/dist/infrastructure/context/project-context-loader.d.ts.map +0 -1
- package/dist/infrastructure/context/project-context-loader.js +0 -184
- package/dist/infrastructure/context/project-context-loader.js.map +0 -1
- package/dist/infrastructure/context/session-manager.d.ts +0 -42
- package/dist/infrastructure/context/session-manager.d.ts.map +0 -1
- package/dist/infrastructure/context/session-manager.js.map +0 -1
- package/dist/infrastructure/cost/cost-tracker.d.ts +0 -91
- package/dist/infrastructure/cost/cost-tracker.d.ts.map +0 -1
- package/dist/infrastructure/cost/cost-tracker.js.map +0 -1
- package/dist/infrastructure/cost/session-token-tracker.d.ts +0 -68
- package/dist/infrastructure/cost/session-token-tracker.d.ts.map +0 -1
- package/dist/infrastructure/cost/session-token-tracker.js +0 -178
- package/dist/infrastructure/cost/session-token-tracker.js.map +0 -1
- package/dist/infrastructure/cost-calculator.d.ts +0 -34
- package/dist/infrastructure/cost-calculator.d.ts.map +0 -1
- package/dist/infrastructure/cost-calculator.js +0 -145
- package/dist/infrastructure/cost-calculator.js.map +0 -1
- package/dist/infrastructure/cost-estimator.d.ts +0 -48
- package/dist/infrastructure/cost-estimator.d.ts.map +0 -1
- package/dist/infrastructure/cost-estimator.js +0 -201
- package/dist/infrastructure/cost-estimator.js.map +0 -1
- package/dist/infrastructure/file-scanner/file-scanner.d.ts +0 -31
- package/dist/infrastructure/file-scanner/file-scanner.d.ts.map +0 -1
- package/dist/infrastructure/file-scanner/file-scanner.js.map +0 -1
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts +0 -105
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +0 -1
- package/dist/infrastructure/governance/nist-ai-rmf.js.map +0 -1
- package/dist/infrastructure/governance/policy-as-code.d.ts +0 -88
- package/dist/infrastructure/governance/policy-as-code.d.ts.map +0 -1
- package/dist/infrastructure/governance/policy-as-code.js.map +0 -1
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +0 -136
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +0 -1
- package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +0 -1
- package/dist/infrastructure/index.d.ts +0 -7
- package/dist/infrastructure/index.d.ts.map +0 -1
- package/dist/infrastructure/index.js.map +0 -1
- package/dist/infrastructure/observability/execution-tracer.d.ts +0 -130
- package/dist/infrastructure/observability/execution-tracer.d.ts.map +0 -1
- package/dist/infrastructure/observability/execution-tracer.js.map +0 -1
- package/dist/infrastructure/observability/prompt-versioner.d.ts +0 -67
- package/dist/infrastructure/observability/prompt-versioner.d.ts.map +0 -1
- package/dist/infrastructure/observability/prompt-versioner.js.map +0 -1
- package/dist/infrastructure/protocols/a2a-metadata.d.ts +0 -278
- package/dist/infrastructure/protocols/a2a-metadata.d.ts.map +0 -1
- package/dist/infrastructure/protocols/a2a-metadata.js.map +0 -1
- package/dist/infrastructure/protocols/a2a-protocol.d.ts +0 -132
- package/dist/infrastructure/protocols/a2a-protocol.d.ts.map +0 -1
- package/dist/infrastructure/protocols/a2a-protocol.js.map +0 -1
- package/dist/infrastructure/protocols/mcp-oauth.d.ts +0 -91
- package/dist/infrastructure/protocols/mcp-oauth.d.ts.map +0 -1
- package/dist/infrastructure/protocols/mcp-oauth.js.map +0 -1
- package/dist/infrastructure/protocols/mcp-server.d.ts +0 -126
- package/dist/infrastructure/protocols/mcp-server.d.ts.map +0 -1
- package/dist/infrastructure/protocols/mcp-server.js.map +0 -1
- package/dist/infrastructure/protocols/streaming-handler.d.ts +0 -57
- package/dist/infrastructure/protocols/streaming-handler.d.ts.map +0 -1
- package/dist/infrastructure/protocols/streaming-handler.js.map +0 -1
- package/dist/infrastructure/providers/cohere-provider.d.ts +0 -39
- package/dist/infrastructure/providers/cohere-provider.d.ts.map +0 -1
- package/dist/infrastructure/providers/cohere-provider.js.map +0 -1
- package/dist/infrastructure/providers/fake-provider.d.ts +0 -43
- package/dist/infrastructure/providers/fake-provider.d.ts.map +0 -1
- package/dist/infrastructure/providers/fake-provider.js.map +0 -1
- package/dist/infrastructure/providers/local-llm-provider.d.ts +0 -49
- package/dist/infrastructure/providers/local-llm-provider.d.ts.map +0 -1
- package/dist/infrastructure/providers/local-llm-provider.js.map +0 -1
- package/dist/infrastructure/providers/model-config.types.d.ts +0 -70
- package/dist/infrastructure/providers/model-config.types.d.ts.map +0 -1
- package/dist/infrastructure/providers/model-config.types.js.map +0 -1
- package/dist/infrastructure/providers/model-provider.interface.d.ts +0 -113
- package/dist/infrastructure/providers/model-provider.interface.d.ts.map +0 -1
- package/dist/infrastructure/providers/model-provider.interface.js.map +0 -1
- package/dist/infrastructure/providers/openai-provider.d.ts +0 -38
- package/dist/infrastructure/providers/openai-provider.d.ts.map +0 -1
- package/dist/infrastructure/providers/openai-provider.js.map +0 -1
- package/dist/infrastructure/providers/openrouter-provider.d.ts +0 -42
- package/dist/infrastructure/providers/openrouter-provider.d.ts.map +0 -1
- package/dist/infrastructure/providers/openrouter-provider.js.map +0 -1
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts +0 -48
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts.map +0 -1
- package/dist/infrastructure/providers/operation-provider-resolver.js.map +0 -1
- package/dist/infrastructure/providers/provider-config-loader.d.ts +0 -37
- package/dist/infrastructure/providers/provider-config-loader.d.ts.map +0 -1
- package/dist/infrastructure/providers/provider-config-loader.js.map +0 -1
- package/dist/infrastructure/providers/provider-registry.d.ts +0 -53
- package/dist/infrastructure/providers/provider-registry.d.ts.map +0 -1
- package/dist/infrastructure/providers/provider-registry.js.map +0 -1
- package/dist/infrastructure/security/ai-sast-scanner.d.ts +0 -59
- package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +0 -1
- package/dist/infrastructure/security/ai-sast-scanner.js.map +0 -1
- package/dist/infrastructure/security/docker-sandbox.d.ts +0 -57
- package/dist/infrastructure/security/docker-sandbox.d.ts.map +0 -1
- package/dist/infrastructure/security/docker-sandbox.js.map +0 -1
- package/dist/infrastructure/security/enhanced-security-gate.d.ts +0 -66
- package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +0 -1
- package/dist/infrastructure/security/enhanced-security-gate.js.map +0 -1
- package/dist/infrastructure/security/input-validator.d.ts +0 -46
- package/dist/infrastructure/security/input-validator.d.ts.map +0 -1
- package/dist/infrastructure/security/input-validator.js.map +0 -1
- package/dist/infrastructure/security/license-scanner.d.ts +0 -55
- package/dist/infrastructure/security/license-scanner.d.ts.map +0 -1
- package/dist/infrastructure/security/license-scanner.js.map +0 -1
- package/dist/infrastructure/security/provider-bias-detector.d.ts +0 -53
- package/dist/infrastructure/security/provider-bias-detector.d.ts.map +0 -1
- package/dist/infrastructure/security/provider-bias-detector.js.map +0 -1
- package/dist/infrastructure/security/sandbox-executor.d.ts +0 -34
- package/dist/infrastructure/security/sandbox-executor.d.ts.map +0 -1
- package/dist/infrastructure/security/sandbox-executor.js.map +0 -1
- package/dist/infrastructure/serialization/toon-serializer.d.ts +0 -45
- package/dist/infrastructure/serialization/toon-serializer.d.ts.map +0 -1
- package/dist/infrastructure/serialization/toon-serializer.js.map +0 -1
- package/dist/infrastructure/storage/embeddings-path.d.ts +0 -18
- package/dist/infrastructure/storage/embeddings-path.d.ts.map +0 -1
- package/dist/infrastructure/storage/embeddings-path.js.map +0 -1
- package/dist/infrastructure/storage/memory-stream-service.d.ts +0 -47
- package/dist/infrastructure/storage/memory-stream-service.d.ts.map +0 -1
- package/dist/infrastructure/storage/memory-stream-service.js.map +0 -1
- package/dist/infrastructure/storage/plan-repository.d.ts +0 -40
- package/dist/infrastructure/storage/plan-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/plan-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-context-repository.d.ts +0 -95
- package/dist/infrastructure/storage/sqlite-context-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-context-repository.js +0 -467
- package/dist/infrastructure/storage/sqlite-context-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-decision-repository.d.ts +0 -29
- package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-decision-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +0 -47
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts +0 -41
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts +0 -29
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-memory-repository.d.ts +0 -40
- package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-memory-repository.js.map +0 -1
- package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts +0 -25
- package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +0 -1
- package/dist/infrastructure/storage/task-helpers.d.ts +0 -69
- package/dist/infrastructure/storage/task-helpers.d.ts.map +0 -1
- package/dist/infrastructure/storage/task-helpers.js.map +0 -1
- package/dist/infrastructure/storage/task-repository.d.ts +0 -67
- package/dist/infrastructure/storage/task-repository.d.ts.map +0 -1
- package/dist/infrastructure/storage/task-repository.js.map +0 -1
- package/dist/infrastructure/telemetry/telemetry-service.d.ts +0 -74
- package/dist/infrastructure/telemetry/telemetry-service.d.ts.map +0 -1
- package/dist/infrastructure/telemetry/telemetry-service.js.map +0 -1
- package/dist/infrastructure/ux/appropriate-friction.d.ts +0 -77
- package/dist/infrastructure/ux/appropriate-friction.d.ts.map +0 -1
- package/dist/infrastructure/ux/appropriate-friction.js.map +0 -1
- package/dist/infrastructure/ux/bi-directional-learning.d.ts +0 -131
- package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +0 -1
- package/dist/infrastructure/ux/bi-directional-learning.js.map +0 -1
- package/dist/infrastructure/ux/capability-boundaries.d.ts +0 -22
- package/dist/infrastructure/ux/capability-boundaries.d.ts.map +0 -1
- package/dist/infrastructure/ux/capability-boundaries.js.map +0 -1
- package/dist/infrastructure/ux/cli-style-guide.d.ts +0 -105
- package/dist/infrastructure/ux/cli-style-guide.d.ts.map +0 -1
- package/dist/infrastructure/ux/cli-style-guide.js +0 -220
- package/dist/infrastructure/ux/cli-style-guide.js.map +0 -1
- package/dist/infrastructure/ux/comprehensive-formatter.d.ts +0 -21
- package/dist/infrastructure/ux/comprehensive-formatter.d.ts.map +0 -1
- package/dist/infrastructure/ux/comprehensive-formatter.js.map +0 -1
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +0 -11
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +0 -1
- package/dist/infrastructure/ux/contextual-feature-discovery.js.map +0 -1
- package/dist/infrastructure/ux/expectation-management.d.ts +0 -98
- package/dist/infrastructure/ux/expectation-management.d.ts.map +0 -1
- package/dist/infrastructure/ux/expectation-management.js.map +0 -1
- package/dist/infrastructure/ux/feature-discovery.d.ts +0 -17
- package/dist/infrastructure/ux/feature-discovery.d.ts.map +0 -1
- package/dist/infrastructure/ux/feature-discovery.js.map +0 -1
- package/dist/infrastructure/ux/feedback-prompt.d.ts +0 -26
- package/dist/infrastructure/ux/feedback-prompt.d.ts.map +0 -1
- package/dist/infrastructure/ux/feedback-prompt.js.map +0 -1
- package/dist/infrastructure/ux/hitl-validation.d.ts +0 -139
- package/dist/infrastructure/ux/hitl-validation.d.ts.map +0 -1
- package/dist/infrastructure/ux/hitl-validation.js.map +0 -1
- package/dist/infrastructure/ux/progress-indicator.d.ts +0 -53
- package/dist/infrastructure/ux/progress-indicator.d.ts.map +0 -1
- package/dist/infrastructure/ux/progress-indicator.js.map +0 -1
- package/dist/infrastructure/ux/progressive-disclosure.d.ts +0 -84
- package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +0 -1
- package/dist/infrastructure/ux/progressive-disclosure.js.map +0 -1
- package/dist/infrastructure/ux/review-checkpoint.d.ts +0 -37
- package/dist/infrastructure/ux/review-checkpoint.d.ts.map +0 -1
- package/dist/infrastructure/ux/review-checkpoint.js.map +0 -1
- package/dist/infrastructure/ux/staged-feature-intro.d.ts +0 -22
- package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +0 -1
- package/dist/infrastructure/ux/staged-feature-intro.js.map +0 -1
- package/dist/infrastructure/ux/syntax-highlighter.d.ts +0 -20
- package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +0 -1
- package/dist/infrastructure/ux/syntax-highlighter.js.map +0 -1
- package/dist/infrastructure/ux/team-standards.d.ts +0 -94
- package/dist/infrastructure/ux/team-standards.d.ts.map +0 -1
- package/dist/infrastructure/ux/team-standards.js.map +0 -1
- package/dist/infrastructure/validation/agent-feedback.d.ts +0 -57
- package/dist/infrastructure/validation/agent-feedback.d.ts.map +0 -1
- package/dist/infrastructure/validation/agent-feedback.js.map +0 -1
- package/dist/infrastructure/validation/agent-validation-helper.d.ts +0 -75
- package/dist/infrastructure/validation/agent-validation-helper.d.ts.map +0 -1
- package/dist/infrastructure/validation/agent-validation-helper.js.map +0 -1
- package/dist/infrastructure/validation/hallucination-detector.d.ts +0 -121
- package/dist/infrastructure/validation/hallucination-detector.d.ts.map +0 -1
- package/dist/infrastructure/validation/hallucination-detector.js +0 -388
- package/dist/infrastructure/validation/hallucination-detector.js.map +0 -1
- package/dist/infrastructure/validation/review-handler.d.ts +0 -26
- package/dist/infrastructure/validation/review-handler.d.ts.map +0 -1
- package/dist/infrastructure/validation/review-handler.js.map +0 -1
- package/dist/infrastructure/validation/summary-aggregator.d.ts +0 -45
- package/dist/infrastructure/validation/summary-aggregator.d.ts.map +0 -1
- package/dist/infrastructure/validation/summary-aggregator.js.map +0 -1
- package/dist/infrastructure/validation/summary-extractor.d.ts +0 -24
- package/dist/infrastructure/validation/summary-extractor.d.ts.map +0 -1
- package/dist/infrastructure/validation/summary-extractor.js.map +0 -1
- package/dist/infrastructure/validation/trace-summary.d.ts +0 -45
- package/dist/infrastructure/validation/trace-summary.d.ts.map +0 -1
- package/dist/infrastructure/validation/trace-summary.js.map +0 -1
- package/dist/infrastructure/verification/verification-service.d.ts +0 -12
- package/dist/infrastructure/verification/verification-service.d.ts.map +0 -1
- package/dist/infrastructure/verification/verification-service.js.map +0 -1
- package/dist/infrastructure/xai/attention-visualizer.d.ts +0 -71
- package/dist/infrastructure/xai/attention-visualizer.d.ts.map +0 -1
- package/dist/infrastructure/xai/attention-visualizer.js.map +0 -1
- package/dist/infrastructure/xai/cot-visualizer.d.ts +0 -103
- package/dist/infrastructure/xai/cot-visualizer.d.ts.map +0 -1
- package/dist/infrastructure/xai/cot-visualizer.js.map +0 -1
- package/dist/infrastructure/xai/decision-tree-log.d.ts +0 -100
- package/dist/infrastructure/xai/decision-tree-log.d.ts.map +0 -1
- package/dist/infrastructure/xai/decision-tree-log.js.map +0 -1
- package/dist/infrastructure/xai/interactive-xai.d.ts +0 -104
- package/dist/infrastructure/xai/interactive-xai.d.ts.map +0 -1
- package/dist/infrastructure/xai/interactive-xai.js.map +0 -1
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +0 -77
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +0 -1
- package/dist/infrastructure/xai/uncertainty-quantifier.js.map +0 -1
- package/dist/intelligent-retrieval 2.js +0 -272
- package/dist/intelligent-retrieval.d.ts +0 -41
- package/dist/intelligent-retrieval.d.ts 2.map +0 -1
- package/dist/intelligent-retrieval.d.ts.map +0 -1
- package/dist/intelligent-retrieval.js.map +0 -1
- package/dist/intent/classifier.d.ts +0 -6
- package/dist/intent/classifier.d.ts.map +0 -1
- package/dist/intent/classifier.js.map +0 -1
- package/dist/intent/context.d.ts +0 -4
- package/dist/intent/context.d.ts.map +0 -1
- package/dist/intent/context.js.map +0 -1
- package/dist/iterative-refinement.d.ts +0 -31
- package/dist/iterative-refinement.d.ts.map +0 -1
- package/dist/iterative-refinement.js.map +0 -1
- package/dist/learning.d.ts +0 -69
- package/dist/learning.d.ts.map +0 -1
- package/dist/learning.js.map +0 -1
- package/dist/log.d.ts +0 -4
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js 2.map +0 -1
- package/dist/log.js.map +0 -1
- package/dist/migrate.d.ts +0 -33
- package/dist/migrate.d.ts.map +0 -1
- package/dist/migrate.js 2.map +0 -1
- package/dist/migrate.js.map +0 -1
- package/dist/monitoring.d.ts +0 -75
- package/dist/monitoring.d.ts.map +0 -1
- package/dist/monitoring.js.map +0 -1
- package/dist/parallel-processor.d 2.ts +0 -44
- package/dist/parallel-processor.d.ts +0 -44
- package/dist/parallel-processor.d.ts.map +0 -1
- package/dist/parallel-processor.js.map +0 -1
- package/dist/planner.d.ts +0 -47
- package/dist/planner.d.ts.map +0 -1
- package/dist/planner.js.map +0 -1
- package/dist/policy.d 2.ts +0 -3
- package/dist/policy.d.ts +0 -3
- package/dist/policy.d.ts.map +0 -1
- package/dist/policy.js.map +0 -1
- package/dist/presentation/cli/commands/ask-command.d.ts +0 -9
- package/dist/presentation/cli/commands/ask-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/ask-command.js.map +0 -1
- package/dist/presentation/cli/commands/audit-command.d.ts +0 -13
- package/dist/presentation/cli/commands/audit-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/audit-command.js +0 -96
- package/dist/presentation/cli/commands/audit-command.js.map +0 -1
- package/dist/presentation/cli/commands/config-command.d.ts +0 -9
- package/dist/presentation/cli/commands/config-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/config-command.js.map +0 -1
- package/dist/presentation/cli/commands/context-command.d.ts +0 -32
- package/dist/presentation/cli/commands/context-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/context-command.js +0 -295
- package/dist/presentation/cli/commands/context-command.js.map +0 -1
- package/dist/presentation/cli/commands/context-helper.d.ts +0 -16
- package/dist/presentation/cli/commands/context-helper.d.ts.map +0 -1
- package/dist/presentation/cli/commands/context-helper.js +0 -88
- package/dist/presentation/cli/commands/context-helper.js.map +0 -1
- package/dist/presentation/cli/commands/cost-command.d.ts +0 -8
- package/dist/presentation/cli/commands/cost-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/cost-command.js.map +0 -1
- package/dist/presentation/cli/commands/decision-command.d.ts +0 -12
- package/dist/presentation/cli/commands/decision-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/decision-command.js.map +0 -1
- package/dist/presentation/cli/commands/docs-command.d.ts +0 -14
- package/dist/presentation/cli/commands/docs-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/docs-command.js.map +0 -1
- package/dist/presentation/cli/commands/fix-command.d.ts +0 -15
- package/dist/presentation/cli/commands/fix-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/fix-command.js.map +0 -1
- package/dist/presentation/cli/commands/help-command.d.ts +0 -9
- package/dist/presentation/cli/commands/help-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/help-command.js.map +0 -1
- package/dist/presentation/cli/commands/knowledge-command.d.ts +0 -13
- package/dist/presentation/cli/commands/knowledge-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/knowledge-command.js.map +0 -1
- package/dist/presentation/cli/commands/learning-dashboard-command.d.ts +0 -8
- package/dist/presentation/cli/commands/learning-dashboard-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/learning-dashboard-command.js.map +0 -1
- package/dist/presentation/cli/commands/models-command.d.ts +0 -13
- package/dist/presentation/cli/commands/models-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/models-command.js.map +0 -1
- package/dist/presentation/cli/commands/orchestrate-command.d.ts +0 -10
- package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/orchestrate-command.js.map +0 -1
- package/dist/presentation/cli/commands/plan-command.d.ts +0 -9
- package/dist/presentation/cli/commands/plan-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/plan-command.js.map +0 -1
- package/dist/presentation/cli/commands/product-command.d.ts +0 -14
- package/dist/presentation/cli/commands/product-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/product-command.js.map +0 -1
- package/dist/presentation/cli/commands/react-command.d.ts +0 -8
- package/dist/presentation/cli/commands/react-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/react-command.js.map +0 -1
- package/dist/presentation/cli/commands/review-command.d.ts +0 -14
- package/dist/presentation/cli/commands/review-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/review-command.js.map +0 -1
- package/dist/presentation/cli/commands/run-command.d.ts +0 -13
- package/dist/presentation/cli/commands/run-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/run-command.js.map +0 -1
- package/dist/presentation/cli/commands/setup-command.d.ts +0 -10
- package/dist/presentation/cli/commands/setup-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/setup-command.js.map +0 -1
- package/dist/presentation/cli/commands/smart-command.d.ts +0 -11
- package/dist/presentation/cli/commands/smart-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/smart-command.js.map +0 -1
- package/dist/presentation/cli/commands/status-command.d.ts +0 -14
- package/dist/presentation/cli/commands/status-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/status-command.js.map +0 -1
- package/dist/presentation/cli/commands/suggest-command.d.ts +0 -11
- package/dist/presentation/cli/commands/suggest-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/suggest-command.js.map +0 -1
- package/dist/presentation/cli/commands/trace-command.d.ts +0 -8
- package/dist/presentation/cli/commands/trace-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/trace-command.js.map +0 -1
- package/dist/presentation/cli/commands/trust-command.d.ts +0 -28
- package/dist/presentation/cli/commands/trust-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/trust-command.js.map +0 -1
- package/dist/presentation/cli/commands/undo-command.d.ts +0 -8
- package/dist/presentation/cli/commands/undo-command.d.ts.map +0 -1
- package/dist/presentation/cli/commands/undo-command.js.map +0 -1
- package/dist/presentation/cli/error-display.d.ts +0 -25
- package/dist/presentation/cli/error-display.d.ts.map +0 -1
- package/dist/presentation/cli/error-display.js.map +0 -1
- package/dist/query-optimizer.d.ts +0 -32
- package/dist/query-optimizer.d.ts.map +0 -1
- package/dist/query-optimizer.js.map +0 -1
- package/dist/refactor.d.ts +0 -27
- package/dist/refactor.d.ts.map +0 -1
- package/dist/refactor.js.map +0 -1
- package/dist/review 2.js +0 -206
- package/dist/review.d.ts +0 -31
- package/dist/review.d.ts.map +0 -1
- package/dist/review.js.map +0 -1
- package/dist/search.d.ts +0 -19
- package/dist/search.d.ts.map +0 -1
- package/dist/search.js 2.map +0 -1
- package/dist/search.js.map +0 -1
- package/dist/session 2.js +0 -593
- package/dist/session.d.ts +0 -17
- package/dist/session.d.ts 2.map +0 -1
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js.map +0 -1
- package/dist/task-verification 2.js +0 -336
- package/dist/task-verification.d.ts +0 -39
- package/dist/task-verification.d.ts 2.map +0 -1
- package/dist/task-verification.d.ts.map +0 -1
- package/dist/task-verification.js.map +0 -1
- package/dist/test-minimal.d.ts +0 -2
- package/dist/test-minimal.d.ts.map +0 -1
- package/dist/test-minimal.js +0 -2
- package/dist/test-minimal.js.map +0 -1
- package/dist/testgen.d.ts +0 -24
- package/dist/testgen.d.ts.map +0 -1
- package/dist/testgen.js 2.map +0 -1
- package/dist/testgen.js.map +0 -1
- package/dist/token-optimizer.d 2.ts +0 -20
- package/dist/token-optimizer.d.ts +0 -20
- package/dist/token-optimizer.d.ts.map +0 -1
- package/dist/token-optimizer.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -53
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/edit.d.ts +0 -48
- package/dist/tools/edit.d.ts.map +0 -1
- package/dist/tools/edit.js.map +0 -1
- package/dist/tools/executor.d.ts +0 -29
- package/dist/tools/executor.d.ts.map +0 -1
- package/dist/tools/executor.js.map +0 -1
- package/dist/tools/git-tool.d.ts +0 -87
- package/dist/tools/git-tool.d.ts.map +0 -1
- package/dist/tools/git-tool.js.map +0 -1
- package/dist/tools/parser.d.ts +0 -33
- package/dist/tools/parser.d.ts.map +0 -1
- package/dist/tools/parser.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -74
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/search.d.ts +0 -41
- package/dist/tools/search.d.ts.map +0 -1
- package/dist/tools/search.js.map +0 -1
- package/dist/types.d.ts +0 -36
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/ui.d.ts +0 -60
- package/dist/ui.d.ts 2.map +0 -1
- package/dist/ui.d.ts.map +0 -1
- package/dist/ui.js.map +0 -1
- package/dist/utils/check-api-status.d.ts +0 -12
- package/dist/utils/check-api-status.d.ts.map +0 -1
- package/dist/utils/check-api-status.js.map +0 -1
- package/dist/utils/debug.d.ts +0 -7
- package/dist/utils/debug.d.ts.map +0 -1
- package/dist/utils/debug.js +0 -24
- package/dist/utils/debug.js.map +0 -1
- package/dist/utils/diff-parser.d.ts +0 -22
- package/dist/utils/diff-parser.d.ts.map +0 -1
- package/dist/utils/diff-parser.js.map +0 -1
- package/dist/utils/provider-check.d.ts +0 -21
- package/dist/utils/provider-check.d.ts.map +0 -1
- package/dist/utils/provider-check.js +0 -124
- package/dist/utils/provider-check.js.map +0 -1
- package/dist/utils/version.d.ts +0 -21
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js.map +0 -1
- package/dist/verification/backup.d.ts +0 -30
- package/dist/verification/backup.d.ts.map +0 -1
- package/dist/verification/backup.js.map +0 -1
- package/dist/verification/compiler.d.ts +0 -20
- package/dist/verification/compiler.d.ts.map +0 -1
- package/dist/verification/compiler.js.map +0 -1
- package/dist/verification/index.d.ts +0 -59
- package/dist/verification/index.d.ts.map +0 -1
- package/dist/verification/index.js.map +0 -1
- package/dist/verification/test-runner.d.ts +0 -27
- package/dist/verification/test-runner.d.ts.map +0 -1
- package/dist/verification/test-runner.js.map +0 -1
- package/dist/verify_db.d.ts +0 -2
- package/dist/verify_db.d.ts.map +0 -1
- package/dist/verify_db.js +0 -52
- package/dist/verify_db.js 2.map +0 -1
- package/dist/verify_db.js.map +0 -1
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* Application Use Case: EditFileUseCase
|
|
3
3
|
* Handles file editing with verification and Reflexion
|
|
4
4
|
*/
|
|
5
|
+
const DEBUG = process.env.CODEHERE_DEBUG === '1';
|
|
5
6
|
import { container } from '../services/dependency-container.js';
|
|
6
7
|
import { backupFile, rollbackFile } from '../../verification/backup.js';
|
|
7
8
|
import { executionTracer } from '../../infrastructure/observability/execution-tracer.js';
|
|
8
9
|
import { validateFilePath } from '../../infrastructure/security/input-validator.js';
|
|
9
|
-
import { calculateCost } from '../../infrastructure/cost-calculator.js';
|
|
10
10
|
export class EditFileUseCase {
|
|
11
11
|
aiService;
|
|
12
12
|
verificationService;
|
|
@@ -62,11 +62,6 @@ export class EditFileUseCase {
|
|
|
62
62
|
rootNodeId = lineage?.rootNodeId;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
// Cost tracking variables (populated during AI generation)
|
|
66
|
-
let usage;
|
|
67
|
-
let model;
|
|
68
|
-
let costBreakdown;
|
|
69
|
-
let explanation; // Explanation of changes (if requested)
|
|
70
65
|
// Validate file path
|
|
71
66
|
const pathValidation = validateFilePath(request.filepath);
|
|
72
67
|
if (!pathValidation.valid) {
|
|
@@ -90,7 +85,8 @@ export class EditFileUseCase {
|
|
|
90
85
|
regulatoryRelevant: this.isRegulatoryRelevant(request.filepath, request.instruction),
|
|
91
86
|
};
|
|
92
87
|
const governDecision = await this.nistAIRMF.govern(riskContext);
|
|
93
|
-
|
|
88
|
+
if (DEBUG)
|
|
89
|
+
console.log(`[EditFileUseCase] NIST AI RMF Govern: ${governDecision.decision}`);
|
|
94
90
|
if (governDecision.outcome === 'blocked') {
|
|
95
91
|
return {
|
|
96
92
|
success: false,
|
|
@@ -98,44 +94,14 @@ export class EditFileUseCase {
|
|
|
98
94
|
};
|
|
99
95
|
}
|
|
100
96
|
if (governDecision.outcome === 'requires_review') {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
// CRITICAL FIX: Security check FIRST (before any expensive operations)
|
|
105
|
-
// This prevents wasting time and tokens on dangerous code
|
|
106
|
-
// RESEARCH CONTEXT: 45% of AI-generated code has security flaws, 35% has license issues
|
|
107
|
-
// Use Enhanced Security Gate if available (includes all scanners), fallback to SAST only
|
|
108
|
-
if (this.enhancedSecurityGate) {
|
|
109
|
-
// Fast pre-check on instruction before generating edit
|
|
110
|
-
const fastCheck = await this.enhancedSecurityGate.fastCheck(request.instruction);
|
|
111
|
-
if (!fastCheck.allowed) {
|
|
112
|
-
return {
|
|
113
|
-
success: false,
|
|
114
|
-
error: `Security vulnerabilities detected in instruction: ${fastCheck.findings.join('; ')}`,
|
|
115
|
-
securityFindings: fastCheck.findings,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else if (this.sastScanner) {
|
|
120
|
-
// Legacy: Quick security check on instruction before generating edit
|
|
121
|
-
// This is a fast pattern-based check, full AI scan happens after edit generation
|
|
122
|
-
// Skip security checks in test mode (CODEHERE_SKIP_SECURITY=1)
|
|
123
|
-
const skipSecurity = process.env.CODEHERE_SKIP_SECURITY === '1';
|
|
124
|
-
if (!skipSecurity) {
|
|
125
|
-
const quickSecurityCheck = await this.sastScanner.scanInstruction(request.instruction);
|
|
126
|
-
if (quickSecurityCheck && quickSecurityCheck.findings && quickSecurityCheck.findings.length > 0) {
|
|
127
|
-
const criticalFindings = quickSecurityCheck.findings.filter((f) => f.severity === 'critical') || [];
|
|
128
|
-
const highFindings = quickSecurityCheck.findings.filter((f) => f.severity === 'high') || [];
|
|
129
|
-
if (criticalFindings.length > 0 || highFindings.length > 0) {
|
|
130
|
-
return {
|
|
131
|
-
success: false,
|
|
132
|
-
error: `Security vulnerabilities detected: ${criticalFindings.length} critical, ${highFindings.length} high severity findings. Review and fix before applying.`,
|
|
133
|
-
securityFindings: quickSecurityCheck.findings,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
}
|
|
97
|
+
if (DEBUG)
|
|
98
|
+
console.warn(`[EditFileUseCase] ⚠️ Governance requires review: ${governDecision.rationale}`);
|
|
137
99
|
}
|
|
138
100
|
}
|
|
101
|
+
// NOTE: We do NOT scan the instruction text itself for security patterns.
|
|
102
|
+
// The instruction is a human request like "fix the SQL injection" — scanning it
|
|
103
|
+
// would block legitimate fix requests. Security scanning happens on the GENERATED
|
|
104
|
+
// code output, not on what the user asked for.
|
|
139
105
|
const { readFileSync, writeFileSync, existsSync, mkdirSync } = await import('fs');
|
|
140
106
|
const { join, dirname } = await import('path');
|
|
141
107
|
// Use sanitized path if validation found issues
|
|
@@ -156,26 +122,33 @@ export class EditFileUseCase {
|
|
|
156
122
|
});
|
|
157
123
|
if (frictionPoint) {
|
|
158
124
|
frictionApplied = frictionPoint;
|
|
159
|
-
|
|
125
|
+
if (DEBUG)
|
|
126
|
+
console.log(`[EditFileUseCase] ⚠️ Friction applied: ${frictionPoint.message}`);
|
|
160
127
|
// For CLI: Log warning. For UI: This would pause and wait for user interaction
|
|
161
128
|
if (frictionPoint.requiresExplicitConfirmation) {
|
|
162
129
|
// In CLI, we'll allow it but log the warning
|
|
163
130
|
// In UI, this would block until user confirms
|
|
164
|
-
|
|
131
|
+
if (DEBUG)
|
|
132
|
+
console.warn(`[EditFileUseCase] Explicit confirmation required: ${frictionPoint.message}`);
|
|
165
133
|
}
|
|
166
134
|
}
|
|
167
135
|
}
|
|
168
136
|
// Handle file creation if file doesn't exist
|
|
169
137
|
if (!fileExists) {
|
|
170
|
-
|
|
171
|
-
|
|
138
|
+
if (DEBUG)
|
|
139
|
+
console.log(`[EditFileUseCase] File does not exist, creating new file: ${fullPath}`);
|
|
140
|
+
if (DEBUG)
|
|
141
|
+
console.log(`[EditFileUseCase] Instruction: ${request.instruction}`);
|
|
172
142
|
return await this.createFile(request, fullPath);
|
|
173
143
|
}
|
|
174
|
-
|
|
175
|
-
|
|
144
|
+
if (DEBUG)
|
|
145
|
+
console.log(`[EditFileUseCase] Editing existing file: ${fullPath}`);
|
|
146
|
+
if (DEBUG)
|
|
147
|
+
console.log(`[EditFileUseCase] Instruction: ${request.instruction}`);
|
|
176
148
|
// Read current content
|
|
177
149
|
const currentContent = readFileSync(fullPath, 'utf-8');
|
|
178
|
-
|
|
150
|
+
if (DEBUG)
|
|
151
|
+
console.log(`[EditFileUseCase] File size: ${currentContent.length} chars`);
|
|
179
152
|
// Update risk level with file context
|
|
180
153
|
const updatedRiskLevel = this.determineRiskLevel(request.instruction, currentContent);
|
|
181
154
|
// 3. Check HITL Validation requirement
|
|
@@ -190,7 +163,8 @@ export class EditFileUseCase {
|
|
|
190
163
|
})) {
|
|
191
164
|
hitlRequired = true;
|
|
192
165
|
// Note: In CLI, we proceed with warning. In UI, this would block until approval
|
|
193
|
-
|
|
166
|
+
if (DEBUG)
|
|
167
|
+
console.warn(`[EditFileUseCase] ⚠️ HITL validation required for this operation`);
|
|
194
168
|
}
|
|
195
169
|
// Track edit generation in lineage
|
|
196
170
|
if (this.promptToCodeLineage && lineageId && rootNodeId) {
|
|
@@ -224,48 +198,22 @@ export class EditFileUseCase {
|
|
|
224
198
|
enhancedInstruction = `${request.instruction}\n\n${contextParts.join('\n\n')}`;
|
|
225
199
|
}
|
|
226
200
|
}
|
|
227
|
-
|
|
228
|
-
// Extract diff and capture usage/cost/explanation data
|
|
229
|
-
diff = editResult.text;
|
|
230
|
-
usage = editResult.usage;
|
|
231
|
-
model = editResult.model;
|
|
232
|
-
explanation = editResult.explanation;
|
|
201
|
+
diff = await this.aiService.generateEdit(currentContent, enhancedInstruction, request.filepath);
|
|
233
202
|
codeGenSpinner.stop();
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
if (usage && model) {
|
|
237
|
-
const provider = process.env.CODEHERE_AI_PROVIDER || 'openai';
|
|
238
|
-
costBreakdown = calculateCost(usage, model, provider);
|
|
239
|
-
console.log(`[EditFileUseCase] Cost: $${costBreakdown.totalCost.toFixed(4)} (${usage.inputTokens} input + ${usage.outputTokens} output tokens)`);
|
|
240
|
-
}
|
|
241
|
-
// P0 Security: Validate LLM output before processing
|
|
242
|
-
if (this.enhancedSecurityGate) {
|
|
243
|
-
const outputValidation = await this.enhancedSecurityGate.validateOutput(diff, {
|
|
244
|
-
query: enhancedInstruction,
|
|
245
|
-
operation: 'generateEdit',
|
|
246
|
-
});
|
|
247
|
-
if (!outputValidation.allowed) {
|
|
248
|
-
return {
|
|
249
|
-
success: false,
|
|
250
|
-
error: `Security: Output validation failed. Findings: ${outputValidation.findings.join('; ')}`,
|
|
251
|
-
securityFindings: outputValidation.findings,
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
// Use sanitized output if available
|
|
255
|
-
if (outputValidation.sanitized && outputValidation.sanitized !== diff) {
|
|
256
|
-
console.warn(`[EditFileUseCase] Output sanitized due to security findings`);
|
|
257
|
-
diff = outputValidation.sanitized;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
203
|
+
if (DEBUG)
|
|
204
|
+
console.log(`[EditFileUseCase] Generated diff length: ${diff.length} chars`);
|
|
260
205
|
if (diff.length > 0) {
|
|
261
|
-
|
|
206
|
+
if (DEBUG)
|
|
207
|
+
console.log(`[EditFileUseCase] Diff preview: ${diff.substring(0, 200)}...`);
|
|
262
208
|
}
|
|
263
209
|
else {
|
|
264
|
-
|
|
210
|
+
if (DEBUG)
|
|
211
|
+
console.warn(`[EditFileUseCase] Warning: Empty diff generated`);
|
|
265
212
|
}
|
|
266
213
|
}
|
|
267
214
|
catch (error) {
|
|
268
|
-
|
|
215
|
+
if (DEBUG)
|
|
216
|
+
console.error(`[EditFileUseCase] Failed to generate edit:`, error);
|
|
269
217
|
return {
|
|
270
218
|
success: false,
|
|
271
219
|
error: `Failed to generate edit: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -275,34 +223,53 @@ export class EditFileUseCase {
|
|
|
275
223
|
let newContent;
|
|
276
224
|
try {
|
|
277
225
|
newContent = await this.applyDiff(currentContent, diff);
|
|
278
|
-
|
|
226
|
+
if (DEBUG)
|
|
227
|
+
console.log(`[EditFileUseCase] Applied diff, new content size: ${newContent.length} chars`);
|
|
279
228
|
// Check if content actually changed
|
|
280
229
|
if (newContent === currentContent) {
|
|
281
|
-
|
|
230
|
+
if (DEBUG)
|
|
231
|
+
console.warn(`[EditFileUseCase] Warning: Content unchanged after applying diff`);
|
|
282
232
|
}
|
|
283
233
|
else {
|
|
284
234
|
const diffSize = newContent.length - currentContent.length;
|
|
285
|
-
|
|
235
|
+
if (DEBUG)
|
|
236
|
+
console.log(`[EditFileUseCase] Content changed: ${diffSize > 0 ? '+' : ''}${diffSize} chars difference`);
|
|
286
237
|
}
|
|
287
238
|
}
|
|
288
239
|
catch (error) {
|
|
289
|
-
|
|
240
|
+
if (DEBUG)
|
|
241
|
+
console.error(`[EditFileUseCase] Failed to apply diff:`, error);
|
|
290
242
|
return {
|
|
291
243
|
success: false,
|
|
292
244
|
error: `Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`,
|
|
293
245
|
};
|
|
294
246
|
}
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
//
|
|
298
|
-
let securityResult = null;
|
|
247
|
+
// Security scan: compare BEFORE vs AFTER to detect NEW issues only.
|
|
248
|
+
// We don't block edits for pre-existing vulnerabilities — that would prevent
|
|
249
|
+
// users from fixing files that already have issues (the whole point of `codehere fix`).
|
|
250
|
+
let securityResult = null;
|
|
299
251
|
if (this.enhancedSecurityGate) {
|
|
300
|
-
// Show progress indicator for security scanning (can take 10-15s)
|
|
301
252
|
const { createSpinner } = await import('../../ui.js');
|
|
302
253
|
const securitySpinner = createSpinner('Scanning for security vulnerabilities...');
|
|
303
254
|
securitySpinner.start();
|
|
304
|
-
//
|
|
255
|
+
// Scan the NEW content
|
|
305
256
|
securityResult = await this.enhancedSecurityGate.scan(request.filepath, newContent, request.instruction, { query: request.instruction });
|
|
257
|
+
// If the new content has issues, check if they're NEW or pre-existing
|
|
258
|
+
if (!securityResult.passed && fileExists) {
|
|
259
|
+
const originalContent = readFileSync(fullPath, 'utf-8');
|
|
260
|
+
const originalResult = await this.enhancedSecurityGate.scan(request.filepath, originalContent, '', {});
|
|
261
|
+
// Count findings: only block if the edit ADDED new vulnerabilities
|
|
262
|
+
const originalCount = (originalResult.sast?.findings?.length || 0);
|
|
263
|
+
const newCount = (securityResult.sast?.findings?.length || 0);
|
|
264
|
+
if (newCount <= originalCount) {
|
|
265
|
+
// Edit didn't make things worse — allow it, but warn
|
|
266
|
+
securityResult.passed = true;
|
|
267
|
+
if (newCount > 0) {
|
|
268
|
+
securityResult.warnings = securityResult.warnings || [];
|
|
269
|
+
securityResult.warnings.push(`File has ${newCount} pre-existing security finding(s). Consider fixing them too.`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
306
273
|
securitySpinner.stop();
|
|
307
274
|
if (!securityResult.passed) {
|
|
308
275
|
const errorMessages = [
|
|
@@ -311,16 +278,16 @@ export class EditFileUseCase {
|
|
|
311
278
|
];
|
|
312
279
|
return {
|
|
313
280
|
success: false,
|
|
314
|
-
error: `
|
|
281
|
+
error: `Edit would introduce new security vulnerabilities: ${errorMessages.join('; ')}`,
|
|
315
282
|
securityFindings: securityResult.sast.findings,
|
|
316
283
|
licenseFindings: securityResult.license.findings,
|
|
317
284
|
providerBiasFindings: securityResult.providerBias.findings,
|
|
318
285
|
uncertaintyFindings: securityResult.uncertainty,
|
|
319
286
|
};
|
|
320
287
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
288
|
+
if (securityResult.warnings && securityResult.warnings.length > 0) {
|
|
289
|
+
if (DEBUG)
|
|
290
|
+
console.warn(`[EditFileUseCase] Security warnings: ${securityResult.warnings.join('; ')}`);
|
|
324
291
|
}
|
|
325
292
|
// NIST AI RMF: MAP - Context framing and risk identification (Enterprise Governance)
|
|
326
293
|
if (this.nistAIRMF) {
|
|
@@ -346,7 +313,8 @@ export class EditFileUseCase {
|
|
|
346
313
|
dependencies: 0, // Could be enhanced
|
|
347
314
|
},
|
|
348
315
|
});
|
|
349
|
-
|
|
316
|
+
if (DEBUG)
|
|
317
|
+
console.log(`[EditFileUseCase] NIST AI RMF Map: ${mapDecision.decision}`);
|
|
350
318
|
if (mapDecision.outcome === 'blocked') {
|
|
351
319
|
return {
|
|
352
320
|
success: false,
|
|
@@ -364,15 +332,19 @@ export class EditFileUseCase {
|
|
|
364
332
|
providerBiasFindings: securityResult.providerBias.findings?.length || 0,
|
|
365
333
|
uncertaintyScore: securityResult.uncertainty?.combined?.value,
|
|
366
334
|
});
|
|
367
|
-
|
|
335
|
+
if (DEBUG)
|
|
336
|
+
console.log(`[EditFileUseCase] NIST AI RMF Measure: ${measureDecision.decision}`);
|
|
368
337
|
}
|
|
369
338
|
// Policy-as-Code: Evaluate policies before proceeding (Enterprise Governance)
|
|
370
|
-
if (
|
|
339
|
+
// Skip policy check if the security gate already approved (edit didn't introduce new issues)
|
|
340
|
+
if (this.policyAsCode && securityResult && !securityResult.passed) {
|
|
371
341
|
// Debug: Log security findings before policy evaluation
|
|
372
342
|
const criticalHighFindings = securityResult.sast.findings.filter((f) => f.severity === 'critical' || f.severity === 'high');
|
|
373
|
-
|
|
343
|
+
if (DEBUG)
|
|
344
|
+
console.log(`[EditFileUseCase] Security scan: ${securityResult.sast.findings.length} total findings, ${criticalHighFindings.length} critical/high`);
|
|
374
345
|
if (criticalHighFindings.length > 0) {
|
|
375
|
-
|
|
346
|
+
if (DEBUG)
|
|
347
|
+
console.log(`[EditFileUseCase] Critical/High findings:`, criticalHighFindings.map((f) => `${f.severity}: ${f.category} - ${f.description}`).join('; '));
|
|
376
348
|
}
|
|
377
349
|
const policyEvaluation = await this.policyAsCode.evaluate({
|
|
378
350
|
filepath: request.filepath,
|
|
@@ -384,18 +356,22 @@ export class EditFileUseCase {
|
|
|
384
356
|
uncertainty: securityResult.uncertainty,
|
|
385
357
|
});
|
|
386
358
|
// Debug: Log policy evaluation results
|
|
387
|
-
|
|
359
|
+
if (DEBUG)
|
|
360
|
+
console.log(`[EditFileUseCase] Policy evaluation: ${policyEvaluation.results.length} rules evaluated, ${policyEvaluation.blockingRules.length} blocking`);
|
|
388
361
|
policyEvaluation.results.forEach((result) => {
|
|
389
362
|
if (!result.passed) {
|
|
390
|
-
|
|
363
|
+
if (DEBUG)
|
|
364
|
+
console.log(`[EditFileUseCase] Policy rule "${result.ruleName}": ${result.message}`);
|
|
391
365
|
if (result.evidence) {
|
|
392
|
-
|
|
366
|
+
if (DEBUG)
|
|
367
|
+
console.log(`[EditFileUseCase] Evidence:`, JSON.stringify(result.evidence, null, 2));
|
|
393
368
|
}
|
|
394
369
|
}
|
|
395
370
|
});
|
|
396
371
|
if (!policyEvaluation.passed && policyEvaluation.blockingRules.length > 0) {
|
|
397
372
|
const blockingRule = policyEvaluation.blockingRules[0];
|
|
398
|
-
|
|
373
|
+
if (DEBUG)
|
|
374
|
+
console.error(`[EditFileUseCase] Policy violation: ${blockingRule.ruleName} - ${blockingRule.message}`);
|
|
399
375
|
return {
|
|
400
376
|
success: false,
|
|
401
377
|
error: `Policy violation: ${blockingRule.message}`,
|
|
@@ -406,7 +382,8 @@ export class EditFileUseCase {
|
|
|
406
382
|
};
|
|
407
383
|
}
|
|
408
384
|
if (policyEvaluation.results.length > 0) {
|
|
409
|
-
|
|
385
|
+
if (DEBUG)
|
|
386
|
+
console.log(`[EditFileUseCase] Policy evaluation: ${policyEvaluation.results.filter(r => r.passed).length}/${policyEvaluation.results.length} passed`);
|
|
410
387
|
}
|
|
411
388
|
}
|
|
412
389
|
// Track security scan in lineage
|
|
@@ -426,24 +403,45 @@ export class EditFileUseCase {
|
|
|
426
403
|
}
|
|
427
404
|
}
|
|
428
405
|
else if (this.sastScanner) {
|
|
429
|
-
//
|
|
406
|
+
// SAST-only scan: compare before vs after to only block NEW issues
|
|
430
407
|
const securityCheck = await this.sastScanner.scan(request.filepath, newContent);
|
|
431
|
-
const
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
408
|
+
const newFindings = securityCheck.findings || [];
|
|
409
|
+
if (newFindings.length > 0 && fileExists) {
|
|
410
|
+
const originalContent = readFileSync(fullPath, 'utf-8');
|
|
411
|
+
const originalCheck = await this.sastScanner.scan(request.filepath, originalContent);
|
|
412
|
+
const originalCount = originalCheck.findings?.length || 0;
|
|
413
|
+
// Only block if the edit ADDED new vulnerabilities
|
|
414
|
+
if (newFindings.length > originalCount) {
|
|
415
|
+
const criticalFindings = newFindings.filter(f => f.severity === 'critical');
|
|
416
|
+
const highFindings = newFindings.filter(f => f.severity === 'high');
|
|
417
|
+
if (criticalFindings.length > 0 || highFindings.length > 0) {
|
|
418
|
+
return {
|
|
419
|
+
success: false,
|
|
420
|
+
error: `Edit would introduce new security vulnerabilities: ${criticalFindings.length} critical, ${highFindings.length} high severity findings.`,
|
|
421
|
+
securityFindings: newFindings,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
else if (newFindings.length > 0 && !fileExists) {
|
|
427
|
+
// New file — block if it has critical/high issues
|
|
428
|
+
const criticalFindings = newFindings.filter(f => f.severity === 'critical');
|
|
429
|
+
const highFindings = newFindings.filter(f => f.severity === 'high');
|
|
430
|
+
if (criticalFindings.length > 0 || highFindings.length > 0) {
|
|
431
|
+
return {
|
|
432
|
+
success: false,
|
|
433
|
+
error: `Security vulnerabilities detected in new file: ${criticalFindings.length} critical, ${highFindings.length} high severity findings.`,
|
|
434
|
+
securityFindings: newFindings,
|
|
435
|
+
};
|
|
436
|
+
}
|
|
440
437
|
}
|
|
441
438
|
}
|
|
442
439
|
// Create backup before applying edit
|
|
443
440
|
let backupPath;
|
|
444
441
|
try {
|
|
445
442
|
backupPath = await backupFile(fullPath);
|
|
446
|
-
|
|
443
|
+
if (DEBUG)
|
|
444
|
+
console.log(`[EditFileUseCase] Backup created: ${backupPath}`);
|
|
447
445
|
// Link backup to current run for undo capability
|
|
448
446
|
const runId = executionTracer.getCurrentRunId();
|
|
449
447
|
if (runId) {
|
|
@@ -460,7 +458,8 @@ export class EditFileUseCase {
|
|
|
460
458
|
}
|
|
461
459
|
}
|
|
462
460
|
catch (error) {
|
|
463
|
-
|
|
461
|
+
if (DEBUG)
|
|
462
|
+
console.warn(`[EditFileUseCase] Failed to create backup: ${error instanceof Error ? error.message : String(error)}`);
|
|
464
463
|
// Continue anyway - backup failure shouldn't block edit
|
|
465
464
|
}
|
|
466
465
|
// 4. Team Standards Validation (before writing file)
|
|
@@ -469,13 +468,15 @@ export class EditFileUseCase {
|
|
|
469
468
|
const teamId = 'default'; // TODO: Get from config or context
|
|
470
469
|
const standardsResult = this.teamStandards.validateCode(teamId, newContent, request.filepath);
|
|
471
470
|
if (!standardsResult.passed) {
|
|
472
|
-
|
|
471
|
+
if (DEBUG)
|
|
472
|
+
console.warn(`[EditFileUseCase] Team standards violations: ${standardsResult.violations.length}`);
|
|
473
473
|
// Try auto-fix
|
|
474
474
|
const fixedResult = this.teamStandards.applyStyleGuide(teamId, newContent, request.filepath);
|
|
475
475
|
if (fixedResult.fixesApplied > 0) {
|
|
476
476
|
newContent = fixedResult.modified;
|
|
477
477
|
teamStandardsApplied = true;
|
|
478
|
-
|
|
478
|
+
if (DEBUG)
|
|
479
|
+
console.log(`[EditFileUseCase] Auto-fixed ${fixedResult.fixesApplied} style issues`);
|
|
479
480
|
}
|
|
480
481
|
else {
|
|
481
482
|
// Critical violations that can't be auto-fixed
|
|
@@ -522,18 +523,11 @@ export class EditFileUseCase {
|
|
|
522
523
|
uncertainty: securityResult?.uncertainty?.combined?.value,
|
|
523
524
|
};
|
|
524
525
|
displayReviewCheckpoint(reviewInfo);
|
|
525
|
-
// Verify if verification service available
|
|
526
|
+
// Verify if verification service available
|
|
526
527
|
let verification;
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
const reason = request.skipVerification ? '--no-verify flag' : 'CODEHERE_SKIP_VERIFICATION=1';
|
|
531
|
-
console.log(`[EditFileUseCase] ⚠️ Verification skipped (${reason})`);
|
|
532
|
-
console.log(`[EditFileUseCase] Writing file without verification...`);
|
|
533
|
-
writeFileSync(fullPath, newContent, 'utf-8');
|
|
534
|
-
}
|
|
535
|
-
else if (this.verificationService) {
|
|
536
|
-
console.log(`[EditFileUseCase] Writing file and verifying...`);
|
|
528
|
+
if (this.verificationService) {
|
|
529
|
+
if (DEBUG)
|
|
530
|
+
console.log(`[EditFileUseCase] Writing file and verifying...`);
|
|
537
531
|
writeFileSync(fullPath, newContent, 'utf-8');
|
|
538
532
|
// Show progress indicator for verification (can take 5-10s)
|
|
539
533
|
const { createSpinner } = await import('../../ui.js');
|
|
@@ -546,27 +540,34 @@ export class EditFileUseCase {
|
|
|
546
540
|
else {
|
|
547
541
|
verificationSpinner.fail('Verification failed');
|
|
548
542
|
}
|
|
549
|
-
|
|
543
|
+
if (DEBUG)
|
|
544
|
+
console.log(`[EditFileUseCase] Verification result: success=${verification.success}, compiled=${verification.compiled}, testsPassed=${verification.testsPassed}`);
|
|
550
545
|
if (verification.errors && verification.errors.length > 0) {
|
|
551
|
-
|
|
546
|
+
if (DEBUG)
|
|
547
|
+
console.error(`[EditFileUseCase] Verification errors: ${verification.errors.join('; ')}`);
|
|
552
548
|
}
|
|
553
549
|
if (!verification.success) {
|
|
554
|
-
|
|
550
|
+
if (DEBUG)
|
|
551
|
+
console.warn(`[EditFileUseCase] Verification failed, rolling back...`);
|
|
555
552
|
// Automatic rollback on verification failure
|
|
556
553
|
if (backupPath) {
|
|
557
554
|
try {
|
|
558
555
|
await rollbackFile(fullPath, backupPath);
|
|
559
|
-
|
|
556
|
+
if (DEBUG)
|
|
557
|
+
console.log(`[EditFileUseCase] File rolled back successfully`);
|
|
560
558
|
}
|
|
561
559
|
catch (rollbackError) {
|
|
562
|
-
|
|
560
|
+
if (DEBUG)
|
|
561
|
+
console.error(`[EditFileUseCase] Rollback failed: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`);
|
|
563
562
|
// Try to restore from original content as fallback
|
|
564
563
|
try {
|
|
565
564
|
writeFileSync(fullPath, currentContent, 'utf-8');
|
|
566
|
-
|
|
565
|
+
if (DEBUG)
|
|
566
|
+
console.log(`[EditFileUseCase] File restored from original content`);
|
|
567
567
|
}
|
|
568
568
|
catch (restoreError) {
|
|
569
|
-
|
|
569
|
+
if (DEBUG)
|
|
570
|
+
console.error(`[EditFileUseCase] Restore also failed: ${restoreError instanceof Error ? restoreError.message : String(restoreError)}`);
|
|
570
571
|
}
|
|
571
572
|
}
|
|
572
573
|
}
|
|
@@ -596,7 +597,8 @@ export class EditFileUseCase {
|
|
|
596
597
|
}
|
|
597
598
|
else {
|
|
598
599
|
// No verification - just apply (still create backup for undo capability)
|
|
599
|
-
|
|
600
|
+
if (DEBUG)
|
|
601
|
+
console.log(`[EditFileUseCase] No verification service, writing file directly`);
|
|
600
602
|
writeFileSync(fullPath, newContent, 'utf-8');
|
|
601
603
|
}
|
|
602
604
|
const edit = {
|
|
@@ -623,7 +625,8 @@ export class EditFileUseCase {
|
|
|
623
625
|
generatedBy: 'EditFileUseCase',
|
|
624
626
|
},
|
|
625
627
|
});
|
|
626
|
-
|
|
628
|
+
if (DEBUG)
|
|
629
|
+
console.log(`[EditFileUseCase] Edit recorded for learning`);
|
|
627
630
|
}
|
|
628
631
|
// 6. Complete Prompt-to-Code Lineage tracking
|
|
629
632
|
if (this.promptToCodeLineage && lineageId && rootNodeId) {
|
|
@@ -635,9 +638,11 @@ export class EditFileUseCase {
|
|
|
635
638
|
}, {
|
|
636
639
|
verificationPassed: verification?.success || false,
|
|
637
640
|
});
|
|
638
|
-
|
|
641
|
+
if (DEBUG)
|
|
642
|
+
console.log(`[EditFileUseCase] Lineage tracking complete`);
|
|
639
643
|
}
|
|
640
|
-
|
|
644
|
+
if (DEBUG)
|
|
645
|
+
console.log(`[EditFileUseCase] Edit completed successfully`);
|
|
641
646
|
return {
|
|
642
647
|
success: true,
|
|
643
648
|
edit,
|
|
@@ -645,10 +650,6 @@ export class EditFileUseCase {
|
|
|
645
650
|
frictionApplied,
|
|
646
651
|
hitlRequired,
|
|
647
652
|
hitlCheckpointId,
|
|
648
|
-
usage,
|
|
649
|
-
model,
|
|
650
|
-
cost: costBreakdown,
|
|
651
|
-
explanation,
|
|
652
653
|
};
|
|
653
654
|
}
|
|
654
655
|
/**
|
|
@@ -661,18 +662,22 @@ export class EditFileUseCase {
|
|
|
661
662
|
// Ensure directory exists
|
|
662
663
|
const dir = dirname(fullPath);
|
|
663
664
|
if (!existsSync(dir)) {
|
|
664
|
-
|
|
665
|
+
if (DEBUG)
|
|
666
|
+
console.log(`[EditFileUseCase] Creating directory: ${dir}`);
|
|
665
667
|
mkdirSync(dir, { recursive: true });
|
|
666
668
|
}
|
|
667
669
|
// Generate file content using AI
|
|
668
|
-
|
|
670
|
+
if (DEBUG)
|
|
671
|
+
console.log(`[EditFileUseCase] Generating new file content...`);
|
|
669
672
|
let fileContent;
|
|
670
673
|
try {
|
|
671
674
|
fileContent = await this.aiService.generateFileContent(request.filepath, request.instruction, request.requirements || []);
|
|
672
|
-
|
|
675
|
+
if (DEBUG)
|
|
676
|
+
console.log(`[EditFileUseCase] Generated content length: ${fileContent.length} chars`);
|
|
673
677
|
}
|
|
674
678
|
catch (error) {
|
|
675
|
-
|
|
679
|
+
if (DEBUG)
|
|
680
|
+
console.error(`[EditFileUseCase] Failed to generate file content:`, error);
|
|
676
681
|
return {
|
|
677
682
|
success: false,
|
|
678
683
|
error: `Failed to generate file content: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -693,15 +698,19 @@ export class EditFileUseCase {
|
|
|
693
698
|
}
|
|
694
699
|
// Write file
|
|
695
700
|
writeFileSync(fullPath, fileContent, 'utf-8');
|
|
696
|
-
|
|
701
|
+
if (DEBUG)
|
|
702
|
+
console.log(`[EditFileUseCase] File created successfully: ${fullPath}`);
|
|
697
703
|
// Verify if verification service available
|
|
698
704
|
let verification;
|
|
699
705
|
if (this.verificationService) {
|
|
700
|
-
|
|
706
|
+
if (DEBUG)
|
|
707
|
+
console.log(`[EditFileUseCase] Verifying new file...`);
|
|
701
708
|
verification = await this.verificationService.verify(fullPath);
|
|
702
|
-
|
|
709
|
+
if (DEBUG)
|
|
710
|
+
console.log(`[EditFileUseCase] Verification result: success=${verification.success}, compiled=${verification.compiled}, testsPassed=${verification.testsPassed}`);
|
|
703
711
|
if (!verification.success) {
|
|
704
|
-
|
|
712
|
+
if (DEBUG)
|
|
713
|
+
console.warn(`[EditFileUseCase] Verification failed for new file, but keeping it for inspection`);
|
|
705
714
|
return {
|
|
706
715
|
success: false,
|
|
707
716
|
verification,
|
|
@@ -719,7 +728,8 @@ export class EditFileUseCase {
|
|
|
719
728
|
verificationResult: verification,
|
|
720
729
|
},
|
|
721
730
|
};
|
|
722
|
-
|
|
731
|
+
if (DEBUG)
|
|
732
|
+
console.log(`[EditFileUseCase] File creation completed successfully`);
|
|
723
733
|
return {
|
|
724
734
|
success: true,
|
|
725
735
|
edit,
|
|
@@ -727,7 +737,8 @@ export class EditFileUseCase {
|
|
|
727
737
|
};
|
|
728
738
|
}
|
|
729
739
|
catch (error) {
|
|
730
|
-
|
|
740
|
+
if (DEBUG)
|
|
741
|
+
console.error(`[EditFileUseCase] Failed to create file:`, error);
|
|
731
742
|
return {
|
|
732
743
|
success: false,
|
|
733
744
|
error: `Failed to create file: ${error instanceof Error ? error.message : String(error)}`,
|