codehere 0.1.0 → 0.2.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 +51 -25
- package/dist/agents/base.d.ts +107 -0
- package/dist/agents/base.d.ts.map +1 -0
- package/dist/agents/base.js +101 -0
- package/dist/agents/base.js.map +1 -0
- package/dist/agents/orchestrator-model-driven.d.ts +41 -0
- package/dist/agents/orchestrator-model-driven.d.ts.map +1 -0
- package/dist/agents/orchestrator-model-driven.js +141 -0
- package/dist/agents/orchestrator-model-driven.js.map +1 -0
- package/dist/agents/react-orchestrator-agent.d.ts +15 -0
- package/dist/agents/react-orchestrator-agent.d.ts.map +1 -0
- package/dist/agents/react-orchestrator-agent.js +54 -0
- package/dist/agents/react-orchestrator-agent.js.map +1 -0
- package/dist/application/agents/execution-agent.d.ts +68 -0
- package/dist/application/agents/execution-agent.d.ts.map +1 -0
- package/dist/application/agents/execution-agent.js +299 -0
- package/dist/application/agents/execution-agent.js.map +1 -0
- package/dist/application/agents/multi-agent-orchestrator.d.ts +64 -0
- package/dist/application/agents/multi-agent-orchestrator.d.ts.map +1 -0
- package/dist/application/agents/multi-agent-orchestrator.js +209 -0
- package/dist/application/agents/multi-agent-orchestrator.js.map +1 -0
- package/dist/application/agents/planning-agent.d.ts +61 -0
- package/dist/application/agents/planning-agent.d.ts.map +1 -0
- package/dist/application/agents/planning-agent.js +357 -0
- package/dist/application/agents/planning-agent.js.map +1 -0
- package/dist/application/agents/validation-agent.d.ts +64 -0
- package/dist/application/agents/validation-agent.d.ts.map +1 -0
- package/dist/application/agents/validation-agent.js +182 -0
- package/dist/application/agents/validation-agent.js.map +1 -0
- package/dist/application/architectures/plan-and-act.d.ts +94 -0
- package/dist/application/architectures/plan-and-act.d.ts.map +1 -0
- package/dist/application/architectures/plan-and-act.js +242 -0
- package/dist/application/architectures/plan-and-act.js.map +1 -0
- package/dist/application/index.d.ts +12 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +12 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/services/agent-factory.d.ts +9 -0
- package/dist/application/services/agent-factory.d.ts.map +1 -0
- package/dist/application/services/agent-factory.js +28 -0
- package/dist/application/services/agent-factory.js.map +1 -0
- package/dist/application/services/dependency-container.d.ts +140 -0
- package/dist/application/services/dependency-container.d.ts.map +1 -0
- package/dist/application/services/dependency-container.js +402 -0
- package/dist/application/services/dependency-container.js.map +1 -0
- package/dist/application/services/git-context-service.d.ts +30 -0
- package/dist/application/services/git-context-service.d.ts.map +1 -0
- package/dist/application/services/git-context-service.js +83 -0
- package/dist/application/services/git-context-service.js.map +1 -0
- package/dist/application/services/intelligent-router.d.ts +74 -0
- package/dist/application/services/intelligent-router.d.ts.map +1 -0
- package/dist/application/services/intelligent-router.js +711 -0
- package/dist/application/services/intelligent-router.js.map +1 -0
- package/dist/application/services/tool-executor-service.d.ts +14 -0
- package/dist/application/services/tool-executor-service.d.ts.map +1 -0
- package/dist/application/services/tool-executor-service.js +94 -0
- package/dist/application/services/tool-executor-service.js.map +1 -0
- package/dist/application/use-cases/ask-question-use-case.d.ts +36 -0
- package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/ask-question-use-case.js +150 -0
- package/dist/application/use-cases/ask-question-use-case.js.map +1 -0
- package/dist/application/use-cases/edit-file-use-case.d.ts +76 -0
- package/dist/application/use-cases/edit-file-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/edit-file-use-case.js +685 -0
- package/dist/application/use-cases/edit-file-use-case.js.map +1 -0
- package/dist/application/use-cases/explain-file-use-case.d.ts +21 -0
- package/dist/application/use-cases/explain-file-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/explain-file-use-case.js +50 -0
- package/dist/application/use-cases/explain-file-use-case.js.map +1 -0
- package/dist/application/use-cases/index-codebase-use-case.d.ts +46 -0
- package/dist/application/use-cases/index-codebase-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/index-codebase-use-case.js +113 -0
- package/dist/application/use-cases/index-codebase-use-case.js.map +1 -0
- package/dist/application/use-cases/planning-use-case.d.ts +46 -0
- package/dist/application/use-cases/planning-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/planning-use-case.js +267 -0
- package/dist/application/use-cases/planning-use-case.js.map +1 -0
- package/dist/application/use-cases/react-orchestration-use-case.d.ts +51 -0
- package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/react-orchestration-use-case.js +325 -0
- package/dist/application/use-cases/react-orchestration-use-case.js.map +1 -0
- package/dist/application/use-cases/reflexion-use-case.d.ts +24 -0
- package/dist/application/use-cases/reflexion-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/reflexion-use-case.js +30 -0
- package/dist/application/use-cases/reflexion-use-case.js.map +1 -0
- package/dist/application/workflows/deterministic-workflows.d.ts +61 -0
- package/dist/application/workflows/deterministic-workflows.d.ts.map +1 -0
- package/dist/application/workflows/deterministic-workflows.js +189 -0
- package/dist/application/workflows/deterministic-workflows.js.map +1 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +1 -3
- package/dist/cache.js.map +1 -1
- package/dist/chat.js +10 -10
- package/dist/chat.js.map +1 -1
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.js +1 -2
- package/dist/docs.js.map +1 -1
- package/dist/domain/entities/code-chunk.d.ts +26 -0
- package/dist/domain/entities/code-chunk.d.ts.map +1 -0
- package/dist/domain/entities/code-chunk.js +6 -0
- package/dist/domain/entities/code-chunk.js.map +1 -0
- package/dist/domain/entities/decision.d.ts +37 -0
- package/dist/domain/entities/decision.d.ts.map +1 -0
- package/dist/domain/entities/decision.js +9 -0
- package/dist/domain/entities/decision.js.map +1 -0
- package/dist/domain/entities/edit.d.ts +35 -0
- package/dist/domain/entities/edit.d.ts.map +1 -0
- package/dist/domain/entities/edit.js +6 -0
- package/dist/domain/entities/edit.js.map +1 -0
- package/dist/domain/entities/knowledge-node.d.ts +83 -0
- package/dist/domain/entities/knowledge-node.d.ts.map +1 -0
- package/dist/domain/entities/knowledge-node.js +9 -0
- package/dist/domain/entities/knowledge-node.js.map +1 -0
- package/dist/domain/entities/knowledge-preservation.d.ts +42 -0
- package/dist/domain/entities/knowledge-preservation.d.ts.map +1 -0
- package/dist/domain/entities/knowledge-preservation.js +10 -0
- package/dist/domain/entities/knowledge-preservation.js.map +1 -0
- package/dist/domain/entities/memory.d.ts +36 -0
- package/dist/domain/entities/memory.d.ts.map +1 -0
- package/dist/domain/entities/memory.js +6 -0
- package/dist/domain/entities/memory.js.map +1 -0
- package/dist/domain/entities/pattern.d.ts +49 -0
- package/dist/domain/entities/pattern.d.ts.map +1 -0
- package/dist/domain/entities/pattern.js +7 -0
- package/dist/domain/entities/pattern.js.map +1 -0
- package/dist/domain/entities/plan.d.ts +42 -0
- package/dist/domain/entities/plan.d.ts.map +1 -0
- package/dist/domain/entities/plan.js +6 -0
- package/dist/domain/entities/plan.js.map +1 -0
- package/dist/domain/entities/query.d.ts +17 -0
- package/dist/domain/entities/query.d.ts.map +1 -0
- package/dist/domain/entities/query.js +6 -0
- package/dist/domain/entities/query.js.map +1 -0
- package/dist/domain/index.d.ts +16 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +19 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/interfaces/ai-service.interface.d.ts +62 -0
- package/dist/domain/interfaces/ai-service.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/ai-service.interface.js +6 -0
- package/dist/domain/interfaces/ai-service.interface.js.map +1 -0
- package/dist/domain/interfaces/code-analyzer.interface.d.ts +38 -0
- package/dist/domain/interfaces/code-analyzer.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/code-analyzer.interface.js +6 -0
- package/dist/domain/interfaces/code-analyzer.interface.js.map +1 -0
- package/dist/domain/interfaces/decision-repository.interface.d.ts +51 -0
- package/dist/domain/interfaces/decision-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/decision-repository.interface.js +9 -0
- package/dist/domain/interfaces/decision-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/embedding-repository.interface.d.ts +28 -0
- package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/embedding-repository.interface.js +6 -0
- package/dist/domain/interfaces/embedding-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts +91 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js +9 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts +50 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +8 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/memory-repository.interface.d.ts +49 -0
- package/dist/domain/interfaces/memory-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/memory-repository.interface.js +6 -0
- package/dist/domain/interfaces/memory-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/pattern-repository.interface.d.ts +48 -0
- package/dist/domain/interfaces/pattern-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/pattern-repository.interface.js +6 -0
- package/dist/domain/interfaces/pattern-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/verification-service.interface.d.ts +20 -0
- package/dist/domain/interfaces/verification-service.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/verification-service.interface.js +6 -0
- package/dist/domain/interfaces/verification-service.interface.js.map +1 -0
- package/dist/domain/services/codebase-detector.d.ts +18 -0
- package/dist/domain/services/codebase-detector.d.ts.map +1 -0
- package/dist/domain/services/codebase-detector.js +91 -0
- package/dist/domain/services/codebase-detector.js.map +1 -0
- package/dist/domain/services/cross-team-pattern-sharing.d.ts +65 -0
- package/dist/domain/services/cross-team-pattern-sharing.d.ts.map +1 -0
- package/dist/domain/services/cross-team-pattern-sharing.js +125 -0
- package/dist/domain/services/cross-team-pattern-sharing.js.map +1 -0
- package/dist/domain/services/decision-recorder.d.ts +76 -0
- package/dist/domain/services/decision-recorder.d.ts.map +1 -0
- package/dist/domain/services/decision-recorder.js +223 -0
- package/dist/domain/services/decision-recorder.js.map +1 -0
- package/dist/domain/services/decision-retriever.d.ts +75 -0
- package/dist/domain/services/decision-retriever.d.ts.map +1 -0
- package/dist/domain/services/decision-retriever.js +133 -0
- package/dist/domain/services/decision-retriever.js.map +1 -0
- package/dist/domain/services/graded-memory-activation.d.ts +37 -0
- package/dist/domain/services/graded-memory-activation.d.ts.map +1 -0
- package/dist/domain/services/graded-memory-activation.js +69 -0
- package/dist/domain/services/graded-memory-activation.js.map +1 -0
- package/dist/domain/services/knowledge-access.d.ts +63 -0
- package/dist/domain/services/knowledge-access.d.ts.map +1 -0
- package/dist/domain/services/knowledge-access.js +132 -0
- package/dist/domain/services/knowledge-access.js.map +1 -0
- package/dist/domain/services/knowledge-extractor.d.ts +54 -0
- package/dist/domain/services/knowledge-extractor.d.ts.map +1 -0
- package/dist/domain/services/knowledge-extractor.js +247 -0
- package/dist/domain/services/knowledge-extractor.js.map +1 -0
- package/dist/domain/services/knowledge-graph-builder.d.ts +70 -0
- package/dist/domain/services/knowledge-graph-builder.d.ts.map +1 -0
- package/dist/domain/services/knowledge-graph-builder.js +268 -0
- package/dist/domain/services/knowledge-graph-builder.js.map +1 -0
- package/dist/domain/services/knowledge-graph-query.d.ts +69 -0
- package/dist/domain/services/knowledge-graph-query.d.ts.map +1 -0
- package/dist/domain/services/knowledge-graph-query.js +187 -0
- package/dist/domain/services/knowledge-graph-query.js.map +1 -0
- package/dist/domain/services/memory-retriever.d.ts +30 -0
- package/dist/domain/services/memory-retriever.d.ts.map +1 -0
- package/dist/domain/services/memory-retriever.js +82 -0
- package/dist/domain/services/memory-retriever.js.map +1 -0
- package/dist/domain/services/memory-synthesizer.d.ts +57 -0
- package/dist/domain/services/memory-synthesizer.d.ts.map +1 -0
- package/dist/domain/services/memory-synthesizer.js +91 -0
- package/dist/domain/services/memory-synthesizer.js.map +1 -0
- package/dist/domain/services/pattern-extractor.d.ts +108 -0
- package/dist/domain/services/pattern-extractor.d.ts.map +1 -0
- package/dist/domain/services/pattern-extractor.js +442 -0
- package/dist/domain/services/pattern-extractor.js.map +1 -0
- package/dist/domain/services/query-intent-classifier.d.ts +16 -0
- package/dist/domain/services/query-intent-classifier.d.ts.map +1 -0
- package/dist/domain/services/query-intent-classifier.js +140 -0
- package/dist/domain/services/query-intent-classifier.js.map +1 -0
- package/dist/domain/services/react-loop.d.ts +44 -0
- package/dist/domain/services/react-loop.d.ts.map +1 -0
- package/dist/domain/services/react-loop.js +110 -0
- package/dist/domain/services/react-loop.js.map +1 -0
- package/dist/edit.d.ts +0 -12
- package/dist/edit.d.ts.map +1 -1
- package/dist/edit.js +76 -351
- package/dist/edit.js.map +1 -1
- package/dist/embed.d.ts +0 -4
- package/dist/embed.d.ts.map +1 -1
- package/dist/embed.js +100 -174
- package/dist/embed.js.map +1 -1
- package/dist/error-handler.d.ts +1 -0
- package/dist/error-handler.d.ts.map +1 -1
- package/dist/error-handler.js +46 -3
- package/dist/error-handler.js.map +1 -1
- package/dist/index.js +228 -231
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/ai/cohere-ai-service.d.ts +54 -0
- package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -0
- package/dist/infrastructure/ai/cohere-ai-service.js +547 -0
- package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -0
- package/dist/infrastructure/ai/command-r-evaluation.d.ts +42 -0
- package/dist/infrastructure/ai/command-r-evaluation.d.ts.map +1 -0
- package/dist/infrastructure/ai/command-r-evaluation.js +206 -0
- package/dist/infrastructure/ai/command-r-evaluation.js.map +1 -0
- package/dist/infrastructure/ai/model-config.d.ts +47 -0
- package/dist/infrastructure/ai/model-config.d.ts.map +1 -0
- package/dist/infrastructure/ai/model-config.js +84 -0
- package/dist/infrastructure/ai/model-config.js.map +1 -0
- package/dist/infrastructure/cache/embedding-cache.d.ts +46 -0
- package/dist/infrastructure/cache/embedding-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/embedding-cache.js +104 -0
- package/dist/infrastructure/cache/embedding-cache.js.map +1 -0
- package/dist/infrastructure/chunking/ast-code-chunker.d.ts +12 -0
- package/dist/infrastructure/chunking/ast-code-chunker.d.ts.map +1 -0
- package/dist/infrastructure/chunking/ast-code-chunker.js +19 -0
- package/dist/infrastructure/chunking/ast-code-chunker.js.map +1 -0
- package/dist/infrastructure/chunking/code-aware-chunker.d.ts +63 -0
- package/dist/infrastructure/chunking/code-aware-chunker.d.ts.map +1 -0
- package/dist/infrastructure/chunking/code-aware-chunker.js +397 -0
- package/dist/infrastructure/chunking/code-aware-chunker.js.map +1 -0
- package/dist/infrastructure/config/config-manager.d.ts +79 -0
- package/dist/infrastructure/config/config-manager.d.ts.map +1 -0
- package/dist/infrastructure/config/config-manager.js +162 -0
- package/dist/infrastructure/config/config-manager.js.map +1 -0
- package/dist/infrastructure/cost/cost-tracker.d.ts +90 -0
- package/dist/infrastructure/cost/cost-tracker.d.ts.map +1 -0
- package/dist/infrastructure/cost/cost-tracker.js +353 -0
- package/dist/infrastructure/cost/cost-tracker.js.map +1 -0
- package/dist/infrastructure/file-scanner/file-scanner.d.ts +31 -0
- package/dist/infrastructure/file-scanner/file-scanner.d.ts.map +1 -0
- package/dist/infrastructure/file-scanner/file-scanner.js +106 -0
- package/dist/infrastructure/file-scanner/file-scanner.js.map +1 -0
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts +107 -0
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +1 -0
- package/dist/infrastructure/governance/nist-ai-rmf.js +294 -0
- package/dist/infrastructure/governance/nist-ai-rmf.js.map +1 -0
- package/dist/infrastructure/governance/policy-as-code.d.ts +90 -0
- package/dist/infrastructure/governance/policy-as-code.d.ts.map +1 -0
- package/dist/infrastructure/governance/policy-as-code.js +244 -0
- package/dist/infrastructure/governance/policy-as-code.js.map +1 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +138 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +1 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.js +241 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +1 -0
- package/dist/infrastructure/index.d.ts +7 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +7 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/observability/execution-tracer.d.ts +105 -0
- package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -0
- package/dist/infrastructure/observability/execution-tracer.js +190 -0
- package/dist/infrastructure/observability/execution-tracer.js.map +1 -0
- package/dist/infrastructure/observability/prompt-versioner.d.ts +67 -0
- package/dist/infrastructure/observability/prompt-versioner.d.ts.map +1 -0
- package/dist/infrastructure/observability/prompt-versioner.js +145 -0
- package/dist/infrastructure/observability/prompt-versioner.js.map +1 -0
- package/dist/infrastructure/protocols/a2a-metadata.d.ts +278 -0
- package/dist/infrastructure/protocols/a2a-metadata.d.ts.map +1 -0
- package/dist/infrastructure/protocols/a2a-metadata.js +137 -0
- package/dist/infrastructure/protocols/a2a-metadata.js.map +1 -0
- package/dist/infrastructure/protocols/a2a-protocol.d.ts +132 -0
- package/dist/infrastructure/protocols/a2a-protocol.d.ts.map +1 -0
- package/dist/infrastructure/protocols/a2a-protocol.js +314 -0
- package/dist/infrastructure/protocols/a2a-protocol.js.map +1 -0
- package/dist/infrastructure/protocols/mcp-oauth.d.ts +91 -0
- package/dist/infrastructure/protocols/mcp-oauth.d.ts.map +1 -0
- package/dist/infrastructure/protocols/mcp-oauth.js +184 -0
- package/dist/infrastructure/protocols/mcp-oauth.js.map +1 -0
- package/dist/infrastructure/protocols/mcp-server.d.ts +126 -0
- package/dist/infrastructure/protocols/mcp-server.d.ts.map +1 -0
- package/dist/infrastructure/protocols/mcp-server.js +333 -0
- package/dist/infrastructure/protocols/mcp-server.js.map +1 -0
- package/dist/infrastructure/protocols/streaming-handler.d.ts +57 -0
- package/dist/infrastructure/protocols/streaming-handler.d.ts.map +1 -0
- package/dist/infrastructure/protocols/streaming-handler.js +103 -0
- package/dist/infrastructure/protocols/streaming-handler.js.map +1 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts +55 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +1 -0
- package/dist/infrastructure/security/ai-sast-scanner.js +163 -0
- package/dist/infrastructure/security/ai-sast-scanner.js.map +1 -0
- package/dist/infrastructure/security/docker-sandbox.d.ts +57 -0
- package/dist/infrastructure/security/docker-sandbox.d.ts.map +1 -0
- package/dist/infrastructure/security/docker-sandbox.js +178 -0
- package/dist/infrastructure/security/docker-sandbox.js.map +1 -0
- package/dist/infrastructure/security/enhanced-security-gate.d.ts +51 -0
- package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -0
- package/dist/infrastructure/security/enhanced-security-gate.js +92 -0
- package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -0
- package/dist/infrastructure/security/input-validator.d.ts +33 -0
- package/dist/infrastructure/security/input-validator.d.ts.map +1 -0
- package/dist/infrastructure/security/input-validator.js +152 -0
- package/dist/infrastructure/security/input-validator.js.map +1 -0
- package/dist/infrastructure/security/license-scanner.d.ts +55 -0
- package/dist/infrastructure/security/license-scanner.d.ts.map +1 -0
- package/dist/infrastructure/security/license-scanner.js +167 -0
- package/dist/infrastructure/security/license-scanner.js.map +1 -0
- package/dist/infrastructure/security/provider-bias-detector.d.ts +53 -0
- package/dist/infrastructure/security/provider-bias-detector.d.ts.map +1 -0
- package/dist/infrastructure/security/provider-bias-detector.js +164 -0
- package/dist/infrastructure/security/provider-bias-detector.js.map +1 -0
- package/dist/infrastructure/security/sandbox-executor.d.ts +34 -0
- package/dist/infrastructure/security/sandbox-executor.d.ts.map +1 -0
- package/dist/infrastructure/security/sandbox-executor.js +64 -0
- package/dist/infrastructure/security/sandbox-executor.js.map +1 -0
- package/dist/infrastructure/storage/memory-stream-service.d.ts +47 -0
- package/dist/infrastructure/storage/memory-stream-service.d.ts.map +1 -0
- package/dist/infrastructure/storage/memory-stream-service.js +204 -0
- package/dist/infrastructure/storage/memory-stream-service.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.d.ts +29 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.js +232 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +24 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +162 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts +41 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +417 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts +29 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +230 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.d.ts +40 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.js +229 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts +25 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.js +249 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +1 -0
- package/dist/infrastructure/ux/appropriate-friction.d.ts +77 -0
- package/dist/infrastructure/ux/appropriate-friction.d.ts.map +1 -0
- package/dist/infrastructure/ux/appropriate-friction.js +213 -0
- package/dist/infrastructure/ux/appropriate-friction.js.map +1 -0
- package/dist/infrastructure/ux/bi-directional-learning.d.ts +109 -0
- package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +1 -0
- package/dist/infrastructure/ux/bi-directional-learning.js +200 -0
- package/dist/infrastructure/ux/bi-directional-learning.js.map +1 -0
- package/dist/infrastructure/ux/expectation-management.d.ts +65 -0
- package/dist/infrastructure/ux/expectation-management.d.ts.map +1 -0
- package/dist/infrastructure/ux/expectation-management.js +193 -0
- package/dist/infrastructure/ux/expectation-management.js.map +1 -0
- package/dist/infrastructure/ux/hitl-validation.d.ts +104 -0
- package/dist/infrastructure/ux/hitl-validation.d.ts.map +1 -0
- package/dist/infrastructure/ux/hitl-validation.js +211 -0
- package/dist/infrastructure/ux/hitl-validation.js.map +1 -0
- package/dist/infrastructure/ux/progressive-disclosure.d.ts +84 -0
- package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +1 -0
- package/dist/infrastructure/ux/progressive-disclosure.js +235 -0
- package/dist/infrastructure/ux/progressive-disclosure.js.map +1 -0
- package/dist/infrastructure/ux/team-standards.d.ts +94 -0
- package/dist/infrastructure/ux/team-standards.d.ts.map +1 -0
- package/dist/infrastructure/ux/team-standards.js +196 -0
- package/dist/infrastructure/ux/team-standards.js.map +1 -0
- package/dist/infrastructure/verification/verification-service.d.ts +12 -0
- package/dist/infrastructure/verification/verification-service.d.ts.map +1 -0
- package/dist/infrastructure/verification/verification-service.js +47 -0
- package/dist/infrastructure/verification/verification-service.js.map +1 -0
- package/dist/infrastructure/xai/attention-visualizer.d.ts +73 -0
- package/dist/infrastructure/xai/attention-visualizer.d.ts.map +1 -0
- package/dist/infrastructure/xai/attention-visualizer.js +174 -0
- package/dist/infrastructure/xai/attention-visualizer.js.map +1 -0
- package/dist/infrastructure/xai/cot-visualizer.d.ts +105 -0
- package/dist/infrastructure/xai/cot-visualizer.d.ts.map +1 -0
- package/dist/infrastructure/xai/cot-visualizer.js +239 -0
- package/dist/infrastructure/xai/cot-visualizer.js.map +1 -0
- package/dist/infrastructure/xai/decision-tree-log.d.ts +104 -0
- package/dist/infrastructure/xai/decision-tree-log.d.ts.map +1 -0
- package/dist/infrastructure/xai/decision-tree-log.js +216 -0
- package/dist/infrastructure/xai/decision-tree-log.js.map +1 -0
- package/dist/infrastructure/xai/interactive-xai.d.ts +106 -0
- package/dist/infrastructure/xai/interactive-xai.d.ts.map +1 -0
- package/dist/infrastructure/xai/interactive-xai.js +262 -0
- package/dist/infrastructure/xai/interactive-xai.js.map +1 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +80 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +1 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.js +201 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.js.map +1 -0
- package/dist/intelligent-retrieval.d.ts.map +1 -1
- package/dist/intelligent-retrieval.js +8 -1
- package/dist/intelligent-retrieval.js.map +1 -1
- package/dist/intent/classifier.d.ts +6 -0
- package/dist/intent/classifier.d.ts.map +1 -0
- package/dist/intent/classifier.js +2 -0
- package/dist/intent/classifier.js.map +1 -0
- package/dist/intent/context.d.ts +4 -0
- package/dist/intent/context.d.ts.map +1 -0
- package/dist/intent/context.js +2 -0
- package/dist/intent/context.js.map +1 -0
- package/dist/iterative-refinement.d.ts.map +1 -1
- package/dist/iterative-refinement.js +20 -3
- package/dist/iterative-refinement.js.map +1 -1
- package/dist/learning.d.ts.map +1 -1
- package/dist/learning.js +1 -2
- package/dist/learning.js.map +1 -1
- package/dist/monitoring.d.ts.map +1 -1
- package/dist/monitoring.js +1 -2
- package/dist/monitoring.js.map +1 -1
- package/dist/parallel-processor.d.ts +3 -2
- package/dist/parallel-processor.d.ts.map +1 -1
- package/dist/parallel-processor.js +183 -56
- package/dist/parallel-processor.js.map +1 -1
- package/dist/presentation/cli/commands/ask-command.d.ts +8 -0
- package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/ask-command.js +133 -0
- package/dist/presentation/cli/commands/ask-command.js.map +1 -0
- package/dist/presentation/cli/commands/config-command.d.ts +9 -0
- package/dist/presentation/cli/commands/config-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/config-command.js +123 -0
- package/dist/presentation/cli/commands/config-command.js.map +1 -0
- package/dist/presentation/cli/commands/cost-command.d.ts +8 -0
- package/dist/presentation/cli/commands/cost-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/cost-command.js +191 -0
- package/dist/presentation/cli/commands/cost-command.js.map +1 -0
- package/dist/presentation/cli/commands/decision-command.d.ts +12 -0
- package/dist/presentation/cli/commands/decision-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/decision-command.js +207 -0
- package/dist/presentation/cli/commands/decision-command.js.map +1 -0
- package/dist/presentation/cli/commands/help-command.d.ts +9 -0
- package/dist/presentation/cli/commands/help-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/help-command.js +281 -0
- package/dist/presentation/cli/commands/help-command.js.map +1 -0
- package/dist/presentation/cli/commands/knowledge-command.d.ts +13 -0
- package/dist/presentation/cli/commands/knowledge-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/knowledge-command.js +129 -0
- package/dist/presentation/cli/commands/knowledge-command.js.map +1 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.d.ts +8 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.js +183 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.js.map +1 -0
- package/dist/presentation/cli/commands/orchestrate-command.d.ts +8 -0
- package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/orchestrate-command.js +112 -0
- package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -0
- package/dist/presentation/cli/commands/plan-command.d.ts +8 -0
- package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/plan-command.js +114 -0
- package/dist/presentation/cli/commands/plan-command.js.map +1 -0
- package/dist/presentation/cli/commands/react-command.d.ts +8 -0
- package/dist/presentation/cli/commands/react-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/react-command.js +99 -0
- package/dist/presentation/cli/commands/react-command.js.map +1 -0
- package/dist/presentation/cli/commands/setup-command.d.ts +10 -0
- package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/setup-command.js +231 -0
- package/dist/presentation/cli/commands/setup-command.js.map +1 -0
- package/dist/presentation/cli/commands/smart-command.d.ts +6 -0
- package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/smart-command.js +212 -0
- package/dist/presentation/cli/commands/smart-command.js.map +1 -0
- package/dist/presentation/cli/commands/trace-command.d.ts +8 -0
- package/dist/presentation/cli/commands/trace-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/trace-command.js +125 -0
- package/dist/presentation/cli/commands/trace-command.js.map +1 -0
- package/dist/presentation/cli/commands/undo-command.d.ts +8 -0
- package/dist/presentation/cli/commands/undo-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/undo-command.js +141 -0
- package/dist/presentation/cli/commands/undo-command.js.map +1 -0
- package/dist/presentation/cli/error-display.d.ts +23 -0
- package/dist/presentation/cli/error-display.d.ts.map +1 -0
- package/dist/presentation/cli/error-display.js +122 -0
- package/dist/presentation/cli/error-display.js.map +1 -0
- package/dist/refactor.d.ts.map +1 -1
- package/dist/refactor.js +2 -4
- package/dist/refactor.js.map +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +2 -63
- package/dist/search.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +52 -3
- package/dist/session.js.map +1 -1
- package/dist/testgen.d.ts.map +1 -1
- package/dist/testgen.js +1 -2
- package/dist/testgen.js.map +1 -1
- package/dist/tools/bash.d.ts +53 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +213 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +48 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +235 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/executor.d.ts +29 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +153 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/git-tool.d.ts +87 -0
- package/dist/tools/git-tool.d.ts.map +1 -0
- package/dist/tools/git-tool.js +292 -0
- package/dist/tools/git-tool.js.map +1 -0
- package/dist/tools/parser.d.ts +33 -0
- package/dist/tools/parser.d.ts.map +1 -0
- package/dist/tools/parser.js +158 -0
- package/dist/tools/parser.js.map +1 -0
- package/dist/tools/registry.d.ts +74 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +302 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.d.ts +41 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +100 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +4 -2
- package/dist/ui.js.map +1 -1
- package/dist/utils/check-api-status.d.ts +12 -0
- package/dist/utils/check-api-status.d.ts.map +1 -0
- package/dist/utils/check-api-status.js +82 -0
- package/dist/utils/check-api-status.js.map +1 -0
- package/dist/utils/diff-parser.d.ts +22 -0
- package/dist/utils/diff-parser.d.ts.map +1 -0
- package/dist/utils/diff-parser.js +160 -0
- package/dist/utils/diff-parser.js.map +1 -0
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/version.d.ts +21 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +52 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/verification/backup.d.ts +30 -0
- package/dist/verification/backup.d.ts.map +1 -0
- package/dist/verification/backup.js +238 -0
- package/dist/verification/backup.js.map +1 -0
- package/dist/verification/compiler.d.ts +20 -0
- package/dist/verification/compiler.d.ts.map +1 -0
- package/dist/verification/compiler.js +228 -0
- package/dist/verification/compiler.js.map +1 -0
- package/dist/verification/index.d.ts +59 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +273 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/test-runner.d.ts +27 -0
- package/dist/verification/test-runner.d.ts.map +1 -0
- package/dist/verification/test-runner.js +379 -0
- package/dist/verification/test-runner.js.map +1 -0
- package/package.json +39 -14
- package/ARCHITECTURE.md +0 -240
- package/CHANGELOG.md +0 -44
- package/CONTRIBUTING.md +0 -171
- package/dist/benchmark.d.ts +0 -39
- package/dist/benchmark.d.ts.map +0 -1
- package/dist/benchmark.js +0 -195
- package/dist/benchmark.js.map +0 -1
- package/dist/scaffold.d.ts +0 -14
- package/dist/scaffold.d.ts.map +0 -1
- package/dist/scaffold.js +0 -85
- package/dist/scaffold.js.map +0 -1
- package/templates/next-page/app/layout.tsx +0 -19
- package/templates/next-page/app/page.tsx +0 -10
- package/templates/next-page/package.json +0 -22
- package/templates/node-api/index.js +0 -57
- package/templates/node-api/package.json +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validator.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/security/input-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAuCnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CA4C7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CA2B/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,gBAAgB,CAkBzG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBxD"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: Input Validator
|
|
3
|
+
* Enterprise-grade input validation and sanitization
|
|
4
|
+
*
|
|
5
|
+
* Clean Architecture: Infrastructure Layer
|
|
6
|
+
* Security: Prevents injection attacks, validates user input
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Validate file path to prevent directory traversal
|
|
10
|
+
*/
|
|
11
|
+
export function validateFilePath(filepath) {
|
|
12
|
+
const errors = [];
|
|
13
|
+
// Check for directory traversal attempts
|
|
14
|
+
if (filepath.includes('..') || filepath.includes('~')) {
|
|
15
|
+
errors.push('Directory traversal detected in file path');
|
|
16
|
+
}
|
|
17
|
+
// Check for absolute paths (should be relative)
|
|
18
|
+
if (filepath.startsWith('/') || /^[A-Z]:\\/.test(filepath)) {
|
|
19
|
+
errors.push('Absolute paths not allowed');
|
|
20
|
+
}
|
|
21
|
+
// Check for null bytes
|
|
22
|
+
if (filepath.includes('\0')) {
|
|
23
|
+
errors.push('Null bytes not allowed in file path');
|
|
24
|
+
}
|
|
25
|
+
// Check for dangerous characters
|
|
26
|
+
const dangerousChars = /[<>:"|?*\x00-\x1f]/;
|
|
27
|
+
if (dangerousChars.test(filepath)) {
|
|
28
|
+
errors.push('Invalid characters in file path');
|
|
29
|
+
}
|
|
30
|
+
// Sanitize path
|
|
31
|
+
let sanitized = filepath
|
|
32
|
+
.replace(/\.\./g, '') // Remove ..
|
|
33
|
+
.replace(/~/g, '') // Remove ~
|
|
34
|
+
.replace(/\0/g, '') // Remove null bytes
|
|
35
|
+
.replace(/[<>:"|?*\x00-\x1f]/g, '_'); // Replace dangerous chars
|
|
36
|
+
// Normalize path separators
|
|
37
|
+
sanitized = sanitized.replace(/\\/g, '/');
|
|
38
|
+
return {
|
|
39
|
+
valid: errors.length === 0,
|
|
40
|
+
errors,
|
|
41
|
+
sanitized: errors.length > 0 ? sanitized : undefined,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validate query string to prevent injection
|
|
46
|
+
*/
|
|
47
|
+
export function validateQuery(query) {
|
|
48
|
+
const errors = [];
|
|
49
|
+
// Check for null bytes
|
|
50
|
+
if (query.includes('\0')) {
|
|
51
|
+
errors.push('Null bytes not allowed in query');
|
|
52
|
+
}
|
|
53
|
+
// Check for command injection patterns
|
|
54
|
+
const commandInjectionPatterns = [
|
|
55
|
+
/[;&|`$(){}[\]]/, // Shell metacharacters
|
|
56
|
+
/<script/i, // XSS attempts
|
|
57
|
+
/javascript:/i, // JavaScript protocol
|
|
58
|
+
/on\w+\s*=/i, // Event handlers
|
|
59
|
+
];
|
|
60
|
+
for (const pattern of commandInjectionPatterns) {
|
|
61
|
+
if (pattern.test(query)) {
|
|
62
|
+
errors.push('Potentially dangerous characters detected in query');
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Sanitize query
|
|
67
|
+
let sanitized = query
|
|
68
|
+
.replace(/\0/g, '') // Remove null bytes
|
|
69
|
+
.replace(/[;&|`$(){}[\]]/g, '') // Remove shell metacharacters
|
|
70
|
+
.replace(/<script/gi, '<script') // Escape script tags
|
|
71
|
+
.replace(/javascript:/gi, '') // Remove javascript protocol
|
|
72
|
+
.replace(/on\w+\s*=/gi, ''); // Remove event handlers
|
|
73
|
+
// Trim and limit length
|
|
74
|
+
sanitized = sanitized.trim();
|
|
75
|
+
const MAX_QUERY_LENGTH = 10000; // Reasonable limit
|
|
76
|
+
if (sanitized.length > MAX_QUERY_LENGTH) {
|
|
77
|
+
errors.push(`Query exceeds maximum length of ${MAX_QUERY_LENGTH} characters`);
|
|
78
|
+
sanitized = sanitized.substring(0, MAX_QUERY_LENGTH);
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
valid: errors.length === 0,
|
|
82
|
+
errors,
|
|
83
|
+
sanitized: errors.length > 0 ? sanitized : undefined,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Validate API key format
|
|
88
|
+
*/
|
|
89
|
+
export function validateAPIKey(apiKey) {
|
|
90
|
+
const errors = [];
|
|
91
|
+
if (!apiKey || apiKey.trim().length === 0) {
|
|
92
|
+
errors.push('API key is required');
|
|
93
|
+
}
|
|
94
|
+
// Check minimum length
|
|
95
|
+
if (apiKey.length < 10) {
|
|
96
|
+
errors.push('API key is too short');
|
|
97
|
+
}
|
|
98
|
+
// Check for null bytes
|
|
99
|
+
if (apiKey.includes('\0')) {
|
|
100
|
+
errors.push('Null bytes not allowed in API key');
|
|
101
|
+
}
|
|
102
|
+
// Check for whitespace (API keys shouldn't have spaces)
|
|
103
|
+
if (apiKey !== apiKey.trim()) {
|
|
104
|
+
errors.push('API key should not have leading or trailing whitespace');
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
valid: errors.length === 0,
|
|
108
|
+
errors,
|
|
109
|
+
sanitized: errors.length > 0 ? apiKey.trim() : undefined,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validate file content before processing
|
|
114
|
+
*/
|
|
115
|
+
export function validateFileContent(content, maxSize = 10 * 1024 * 1024) {
|
|
116
|
+
const errors = [];
|
|
117
|
+
// Check size
|
|
118
|
+
const sizeInBytes = new Blob([content]).size;
|
|
119
|
+
if (sizeInBytes > maxSize) {
|
|
120
|
+
errors.push(`File content exceeds maximum size of ${maxSize} bytes`);
|
|
121
|
+
}
|
|
122
|
+
// Check for null bytes (shouldn't be in text files)
|
|
123
|
+
if (content.includes('\0')) {
|
|
124
|
+
errors.push('Null bytes detected in file content');
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
valid: errors.length === 0,
|
|
128
|
+
errors,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Sanitize user input for logging (prevent sensitive data leakage)
|
|
133
|
+
*/
|
|
134
|
+
export function sanitizeForLogging(input) {
|
|
135
|
+
// Remove potential secrets (API keys, tokens, etc.)
|
|
136
|
+
let sanitized = input
|
|
137
|
+
// Remove API keys (Cohere format: alphanumeric, 40+ chars)
|
|
138
|
+
.replace(/[A-Za-z0-9]{40,}/g, '[REDACTED]')
|
|
139
|
+
// Remove email addresses
|
|
140
|
+
.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, '[EMAIL_REDACTED]')
|
|
141
|
+
// Remove potential tokens
|
|
142
|
+
.replace(/token[=:]\s*[A-Za-z0-9_-]+/gi, 'token=[REDACTED]')
|
|
143
|
+
.replace(/password[=:]\s*[^\s]+/gi, 'password=[REDACTED]')
|
|
144
|
+
.replace(/secret[=:]\s*[^\s]+/gi, 'secret=[REDACTED]');
|
|
145
|
+
// Limit length for logging
|
|
146
|
+
const MAX_LOG_LENGTH = 1000;
|
|
147
|
+
if (sanitized.length > MAX_LOG_LENGTH) {
|
|
148
|
+
sanitized = sanitized.substring(0, MAX_LOG_LENGTH) + '...[TRUNCATED]';
|
|
149
|
+
}
|
|
150
|
+
return sanitized;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=input-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validator.js","sourceRoot":"","sources":["../../../src/infrastructure/security/input-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: License Scanner
|
|
3
|
+
* Detects license contamination in AI-generated code
|
|
4
|
+
*
|
|
5
|
+
* Research Finding: 35% of AI-generated code contains license irregularities
|
|
6
|
+
* Critical for preventing IP contamination and legal liability
|
|
7
|
+
*
|
|
8
|
+
* Based on research: AI Ethics for Coding Assistants
|
|
9
|
+
* - GPL/MIT/Apache conflicts are common
|
|
10
|
+
* - Automated detection prevents legal liability
|
|
11
|
+
* - Must integrate into CI/CD pipeline
|
|
12
|
+
*/
|
|
13
|
+
export interface LicenseFinding {
|
|
14
|
+
license: string;
|
|
15
|
+
filepath: string;
|
|
16
|
+
line?: number;
|
|
17
|
+
conflictType: 'incompatible' | 'missing' | 'ambiguous';
|
|
18
|
+
description: string;
|
|
19
|
+
recommendation: string;
|
|
20
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
21
|
+
}
|
|
22
|
+
export interface LicenseScanResult {
|
|
23
|
+
findings: LicenseFinding[];
|
|
24
|
+
totalFindings: number;
|
|
25
|
+
criticalCount: number;
|
|
26
|
+
passed: boolean;
|
|
27
|
+
licenseSummary: Record<string, number>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* License Scanner
|
|
31
|
+
* Scans code for license headers and detects conflicts
|
|
32
|
+
*/
|
|
33
|
+
export declare class LicenseScanner {
|
|
34
|
+
/**
|
|
35
|
+
* Scan code for license information
|
|
36
|
+
*/
|
|
37
|
+
scan(filepath: string, code: string): Promise<LicenseScanResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Detect license headers in code
|
|
40
|
+
*/
|
|
41
|
+
private detectLicenseHeaders;
|
|
42
|
+
/**
|
|
43
|
+
* Check if code has open-source patterns (might need license)
|
|
44
|
+
*/
|
|
45
|
+
private hasOpenSourcePatterns;
|
|
46
|
+
/**
|
|
47
|
+
* Detect ambiguous license statements
|
|
48
|
+
*/
|
|
49
|
+
private detectAmbiguousLicenses;
|
|
50
|
+
/**
|
|
51
|
+
* Check if code has explicit license statement
|
|
52
|
+
*/
|
|
53
|
+
private hasExplicitLicense;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=license-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-scanner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/security/license-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAsBD;;;GAGG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsEtE;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAW3B"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: License Scanner
|
|
3
|
+
* Detects license contamination in AI-generated code
|
|
4
|
+
*
|
|
5
|
+
* Research Finding: 35% of AI-generated code contains license irregularities
|
|
6
|
+
* Critical for preventing IP contamination and legal liability
|
|
7
|
+
*
|
|
8
|
+
* Based on research: AI Ethics for Coding Assistants
|
|
9
|
+
* - GPL/MIT/Apache conflicts are common
|
|
10
|
+
* - Automated detection prevents legal liability
|
|
11
|
+
* - Must integrate into CI/CD pipeline
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* License Compatibility Matrix
|
|
15
|
+
* Based on common open-source license compatibility rules
|
|
16
|
+
*/
|
|
17
|
+
const LICENSE_COMPATIBILITY = {
|
|
18
|
+
// GPL is incompatible with most proprietary licenses
|
|
19
|
+
'GPL-2.0': ['proprietary', 'Apache-2.0'], // GPL-2.0 incompatible with Apache-2.0
|
|
20
|
+
'GPL-3.0': ['proprietary', 'Apache-2.0'],
|
|
21
|
+
// MIT is permissive and compatible with most
|
|
22
|
+
'MIT': [], // MIT is compatible with everything
|
|
23
|
+
// Apache-2.0 is compatible with most except GPL-2.0
|
|
24
|
+
'Apache-2.0': ['GPL-2.0'],
|
|
25
|
+
// BSD is permissive
|
|
26
|
+
'BSD-2-Clause': [],
|
|
27
|
+
'BSD-3-Clause': [],
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* License Scanner
|
|
31
|
+
* Scans code for license headers and detects conflicts
|
|
32
|
+
*/
|
|
33
|
+
export class LicenseScanner {
|
|
34
|
+
/**
|
|
35
|
+
* Scan code for license information
|
|
36
|
+
*/
|
|
37
|
+
async scan(filepath, code) {
|
|
38
|
+
const findings = [];
|
|
39
|
+
const detectedLicenses = new Set();
|
|
40
|
+
// 1. Detect license headers in code
|
|
41
|
+
const licenseHeaders = this.detectLicenseHeaders(code);
|
|
42
|
+
// 2. Check for license conflicts
|
|
43
|
+
for (const detectedLicense of licenseHeaders) {
|
|
44
|
+
detectedLicenses.add(detectedLicense);
|
|
45
|
+
// Check compatibility with other detected licenses
|
|
46
|
+
for (const otherLicense of licenseHeaders) {
|
|
47
|
+
if (detectedLicense !== otherLicense) {
|
|
48
|
+
const incompatibilities = LICENSE_COMPATIBILITY[detectedLicense] || [];
|
|
49
|
+
if (incompatibilities.includes(otherLicense)) {
|
|
50
|
+
findings.push({
|
|
51
|
+
license: detectedLicense,
|
|
52
|
+
filepath,
|
|
53
|
+
conflictType: 'incompatible',
|
|
54
|
+
description: `License conflict: ${detectedLicense} is incompatible with ${otherLicense}`,
|
|
55
|
+
recommendation: `Remove one of the conflicting licenses or use a compatible license`,
|
|
56
|
+
severity: 'critical',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// 3. Check for missing licenses in generated code
|
|
63
|
+
// If code appears to use open-source patterns but has no license, warn
|
|
64
|
+
if (licenseHeaders.length === 0 && this.hasOpenSourcePatterns(code)) {
|
|
65
|
+
findings.push({
|
|
66
|
+
license: 'unknown',
|
|
67
|
+
filepath,
|
|
68
|
+
conflictType: 'missing',
|
|
69
|
+
description: 'Generated code may contain open-source patterns but no license header detected',
|
|
70
|
+
recommendation: 'Add appropriate license header or clarify license status',
|
|
71
|
+
severity: 'medium',
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// 4. Check for ambiguous license statements
|
|
75
|
+
const ambiguousLicenses = this.detectAmbiguousLicenses(code);
|
|
76
|
+
for (const ambiguous of ambiguousLicenses) {
|
|
77
|
+
findings.push({
|
|
78
|
+
license: ambiguous,
|
|
79
|
+
filepath,
|
|
80
|
+
conflictType: 'ambiguous',
|
|
81
|
+
description: `Ambiguous license statement detected: ${ambiguous}`,
|
|
82
|
+
recommendation: 'Clarify license type explicitly',
|
|
83
|
+
severity: 'low',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const criticalCount = findings.filter(f => f.severity === 'critical').length;
|
|
87
|
+
const licenseSummary = {};
|
|
88
|
+
detectedLicenses.forEach(license => {
|
|
89
|
+
licenseSummary[license] = (licenseSummary[license] || 0) + 1;
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
findings,
|
|
93
|
+
totalFindings: findings.length,
|
|
94
|
+
criticalCount,
|
|
95
|
+
passed: criticalCount === 0,
|
|
96
|
+
licenseSummary,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Detect license headers in code
|
|
101
|
+
*/
|
|
102
|
+
detectLicenseHeaders(code) {
|
|
103
|
+
const licenses = [];
|
|
104
|
+
const upperCode = code.toUpperCase();
|
|
105
|
+
// Common license patterns
|
|
106
|
+
const patterns = [
|
|
107
|
+
{ pattern: /GPL.*?v?[23]/i, license: 'GPL-3.0' },
|
|
108
|
+
{ pattern: /GNU.*?GENERAL.*?PUBLIC.*?LICENSE/i, license: 'GPL-3.0' },
|
|
109
|
+
{ pattern: /MIT.*?LICENSE/i, license: 'MIT' },
|
|
110
|
+
{ pattern: /THE.*?MIT.*?LICENSE/i, license: 'MIT' },
|
|
111
|
+
{ pattern: /APACHE.*?LICENSE.*?v?2/i, license: 'Apache-2.0' },
|
|
112
|
+
{ pattern: /BSD.*?LICENSE/i, license: 'BSD-3-Clause' },
|
|
113
|
+
{ pattern: /BSD.*?2.*?CLAUSE/i, license: 'BSD-2-Clause' },
|
|
114
|
+
{ pattern: /ISC.*?LICENSE/i, license: 'ISC' },
|
|
115
|
+
{ pattern: /PROPRIETARY/i, license: 'proprietary' },
|
|
116
|
+
];
|
|
117
|
+
for (const { pattern, license } of patterns) {
|
|
118
|
+
if (pattern.test(code)) {
|
|
119
|
+
licenses.push(license);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return [...new Set(licenses)]; // Remove duplicates
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if code has open-source patterns (might need license)
|
|
126
|
+
*/
|
|
127
|
+
hasOpenSourcePatterns(code) {
|
|
128
|
+
// Patterns that suggest open-source code
|
|
129
|
+
const patterns = [
|
|
130
|
+
/copyright/i,
|
|
131
|
+
/license/i,
|
|
132
|
+
/github\.com/i,
|
|
133
|
+
/npm/i,
|
|
134
|
+
/import.*from.*['"]/i,
|
|
135
|
+
/require\(/i,
|
|
136
|
+
];
|
|
137
|
+
return patterns.some(pattern => pattern.test(code));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Detect ambiguous license statements
|
|
141
|
+
*/
|
|
142
|
+
detectAmbiguousLicenses(code) {
|
|
143
|
+
const ambiguous = [];
|
|
144
|
+
// Ambiguous patterns
|
|
145
|
+
if (/open.*?source/i.test(code) && !this.hasExplicitLicense(code)) {
|
|
146
|
+
ambiguous.push('open-source (unclear)');
|
|
147
|
+
}
|
|
148
|
+
if (/free.*?software/i.test(code) && !this.hasExplicitLicense(code)) {
|
|
149
|
+
ambiguous.push('free software (unclear)');
|
|
150
|
+
}
|
|
151
|
+
return ambiguous;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if code has explicit license statement
|
|
155
|
+
*/
|
|
156
|
+
hasExplicitLicense(code) {
|
|
157
|
+
const explicitPatterns = [
|
|
158
|
+
/MIT/i,
|
|
159
|
+
/GPL/i,
|
|
160
|
+
/Apache/i,
|
|
161
|
+
/BSD/i,
|
|
162
|
+
/LICENSE.*?FILE/i,
|
|
163
|
+
];
|
|
164
|
+
return explicitPatterns.some(pattern => pattern.test(code));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=license-scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-scanner.js","sourceRoot":"","sources":["../../../src/infrastructure/security/license-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: Provider Bias Detector
|
|
3
|
+
* Detects vendor-specific SDK/API usage that creates vendor lock-in
|
|
4
|
+
*
|
|
5
|
+
* Research Finding: LLMs systematically favor Google/Amazon services
|
|
6
|
+
* This creates structural vendor lock-in and violates neutrality
|
|
7
|
+
*
|
|
8
|
+
* Based on research: AI Ethics for Coding Assistants
|
|
9
|
+
* - Provider bias detected in LLM outputs
|
|
10
|
+
* - Creates vendor lock-in risk
|
|
11
|
+
* - Must audit and enforce vendor neutrality
|
|
12
|
+
*/
|
|
13
|
+
export interface ProviderBiasFinding {
|
|
14
|
+
provider: string;
|
|
15
|
+
service: string;
|
|
16
|
+
filepath: string;
|
|
17
|
+
line?: number;
|
|
18
|
+
description: string;
|
|
19
|
+
recommendation: string;
|
|
20
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
21
|
+
}
|
|
22
|
+
export interface ProviderBiasResult {
|
|
23
|
+
findings: ProviderBiasFinding[];
|
|
24
|
+
totalFindings: number;
|
|
25
|
+
criticalCount: number;
|
|
26
|
+
providerSummary: Record<string, number>;
|
|
27
|
+
passed: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Provider Bias Detector
|
|
31
|
+
* Scans code for provider-specific dependencies and flags vendor lock-in risks
|
|
32
|
+
*/
|
|
33
|
+
export declare class ProviderBiasDetector {
|
|
34
|
+
private allowedProviders?;
|
|
35
|
+
constructor(allowedProviders?: string[]);
|
|
36
|
+
/**
|
|
37
|
+
* Scan code for provider bias
|
|
38
|
+
*/
|
|
39
|
+
scan(filepath: string, code: string): Promise<ProviderBiasResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Detect provider-specific services in code
|
|
42
|
+
*/
|
|
43
|
+
private detectProviders;
|
|
44
|
+
/**
|
|
45
|
+
* Detect hardcoded service endpoints/configurations
|
|
46
|
+
*/
|
|
47
|
+
private detectHardcodedServices;
|
|
48
|
+
/**
|
|
49
|
+
* Set allowed providers (enforces vendor neutrality policy)
|
|
50
|
+
*/
|
|
51
|
+
setAllowedProviders(providers: string[]): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=provider-bias-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-bias-detector.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/security/provider-bias-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AA0CD;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAW;gBAExB,gBAAgB,CAAC,EAAE,MAAM,EAAE;IAIvC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoEvE;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: Provider Bias Detector
|
|
3
|
+
* Detects vendor-specific SDK/API usage that creates vendor lock-in
|
|
4
|
+
*
|
|
5
|
+
* Research Finding: LLMs systematically favor Google/Amazon services
|
|
6
|
+
* This creates structural vendor lock-in and violates neutrality
|
|
7
|
+
*
|
|
8
|
+
* Based on research: AI Ethics for Coding Assistants
|
|
9
|
+
* - Provider bias detected in LLM outputs
|
|
10
|
+
* - Creates vendor lock-in risk
|
|
11
|
+
* - Must audit and enforce vendor neutrality
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Provider-specific patterns
|
|
15
|
+
* Maps common provider services to vendor names
|
|
16
|
+
*/
|
|
17
|
+
const PROVIDER_PATTERNS = {
|
|
18
|
+
google: {
|
|
19
|
+
provider: 'Google Cloud',
|
|
20
|
+
services: [
|
|
21
|
+
/@google-cloud\//i,
|
|
22
|
+
/google\.cloud\./i,
|
|
23
|
+
/googleapis\.com/i,
|
|
24
|
+
/firebase/i,
|
|
25
|
+
/gcp/i,
|
|
26
|
+
/cloud\.google\.com/i,
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
amazon: {
|
|
30
|
+
provider: 'Amazon Web Services',
|
|
31
|
+
services: [
|
|
32
|
+
/@aws-sdk\//i,
|
|
33
|
+
/aws\./i,
|
|
34
|
+
/amazonaws\.com/i,
|
|
35
|
+
/lambda/i,
|
|
36
|
+
/s3/i,
|
|
37
|
+
/dynamodb/i,
|
|
38
|
+
/@aws-amplify/i,
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
microsoft: {
|
|
42
|
+
provider: 'Microsoft Azure',
|
|
43
|
+
services: [
|
|
44
|
+
/@azure\//i,
|
|
45
|
+
/azure\./i,
|
|
46
|
+
/azurewebsites\.net/i,
|
|
47
|
+
/blob\.core\.windows\.net/i,
|
|
48
|
+
/@microsoft\/azure/i,
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Provider Bias Detector
|
|
54
|
+
* Scans code for provider-specific dependencies and flags vendor lock-in risks
|
|
55
|
+
*/
|
|
56
|
+
export class ProviderBiasDetector {
|
|
57
|
+
allowedProviders; // If set, only these providers are allowed
|
|
58
|
+
constructor(allowedProviders) {
|
|
59
|
+
this.allowedProviders = allowedProviders;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Scan code for provider bias
|
|
63
|
+
*/
|
|
64
|
+
async scan(filepath, code) {
|
|
65
|
+
const findings = [];
|
|
66
|
+
const providerCounts = {};
|
|
67
|
+
// 1. Detect provider-specific services
|
|
68
|
+
const detectedProviders = this.detectProviders(code);
|
|
69
|
+
// 2. Count provider usage
|
|
70
|
+
for (const provider of detectedProviders) {
|
|
71
|
+
providerCounts[provider] = (providerCounts[provider] || 0) + 1;
|
|
72
|
+
}
|
|
73
|
+
// 3. Check for vendor lock-in patterns
|
|
74
|
+
if (Object.keys(providerCounts).length > 0) {
|
|
75
|
+
// Check if only one provider is used (lock-in risk)
|
|
76
|
+
const uniqueProviders = Object.keys(providerCounts);
|
|
77
|
+
if (uniqueProviders.length === 1 && !this.allowedProviders?.includes(uniqueProviders[0])) {
|
|
78
|
+
findings.push({
|
|
79
|
+
provider: uniqueProviders[0],
|
|
80
|
+
service: 'multiple',
|
|
81
|
+
filepath,
|
|
82
|
+
description: `Code exclusively uses ${uniqueProviders[0]} services, creating vendor lock-in risk`,
|
|
83
|
+
recommendation: `Consider vendor-neutral alternatives or multi-cloud architecture to maintain flexibility`,
|
|
84
|
+
severity: 'high',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// Check if provider is not in allowed list
|
|
88
|
+
if (this.allowedProviders && uniqueProviders.length > 0) {
|
|
89
|
+
for (const provider of uniqueProviders) {
|
|
90
|
+
if (!this.allowedProviders.includes(provider)) {
|
|
91
|
+
findings.push({
|
|
92
|
+
provider,
|
|
93
|
+
service: 'multiple',
|
|
94
|
+
filepath,
|
|
95
|
+
description: `Provider ${provider} is not in allowed providers list`,
|
|
96
|
+
recommendation: `Use an allowed provider or update policy to allow ${provider}`,
|
|
97
|
+
severity: 'critical',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// 4. Check for provider-specific hardcoding
|
|
104
|
+
const hardcodedServices = this.detectHardcodedServices(code);
|
|
105
|
+
for (const service of hardcodedServices) {
|
|
106
|
+
findings.push({
|
|
107
|
+
provider: service.provider,
|
|
108
|
+
service: service.name,
|
|
109
|
+
filepath,
|
|
110
|
+
description: `Hardcoded ${service.provider} service: ${service.name}`,
|
|
111
|
+
recommendation: `Use environment variables or configuration to make service provider configurable`,
|
|
112
|
+
severity: 'medium',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
const criticalCount = findings.filter(f => f.severity === 'critical').length;
|
|
116
|
+
return {
|
|
117
|
+
findings,
|
|
118
|
+
totalFindings: findings.length,
|
|
119
|
+
criticalCount,
|
|
120
|
+
providerSummary: providerCounts,
|
|
121
|
+
passed: criticalCount === 0,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Detect provider-specific services in code
|
|
126
|
+
*/
|
|
127
|
+
detectProviders(code) {
|
|
128
|
+
const providers = [];
|
|
129
|
+
for (const [key, { provider, services }] of Object.entries(PROVIDER_PATTERNS)) {
|
|
130
|
+
for (const pattern of services) {
|
|
131
|
+
if (pattern.test(code)) {
|
|
132
|
+
providers.push(provider);
|
|
133
|
+
break; // Found this provider, move to next
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return [...new Set(providers)]; // Remove duplicates
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Detect hardcoded service endpoints/configurations
|
|
141
|
+
*/
|
|
142
|
+
detectHardcodedServices(code) {
|
|
143
|
+
const hardcoded = [];
|
|
144
|
+
// Hardcoded endpoints
|
|
145
|
+
const endpointPatterns = [
|
|
146
|
+
{ pattern: /https?:\/\/.*\.amazonaws\.com/i, provider: 'Amazon Web Services', name: 'AWS endpoint' },
|
|
147
|
+
{ pattern: /https?:\/\/.*\.googleapis\.com/i, provider: 'Google Cloud', name: 'Google API endpoint' },
|
|
148
|
+
{ pattern: /https?:\/\/.*\.azurewebsites\.net/i, provider: 'Microsoft Azure', name: 'Azure endpoint' },
|
|
149
|
+
];
|
|
150
|
+
for (const { pattern, provider, name } of endpointPatterns) {
|
|
151
|
+
if (pattern.test(code)) {
|
|
152
|
+
hardcoded.push({ provider, name });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return hardcoded;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Set allowed providers (enforces vendor neutrality policy)
|
|
159
|
+
*/
|
|
160
|
+
setAllowedProviders(providers) {
|
|
161
|
+
this.allowedProviders = providers;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=provider-bias-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-bias-detector.js","sourceRoot":"","sources":["../../../src/infrastructure/security/provider-bias-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: Sandbox Executor
|
|
3
|
+
* Main interface for secure code execution
|
|
4
|
+
* Routes to appropriate sandbox implementation (Docker/WASM)
|
|
5
|
+
*/
|
|
6
|
+
import { type SandboxResult, type SandboxOptions } from './docker-sandbox.js';
|
|
7
|
+
export interface CodeExecutionRequest {
|
|
8
|
+
code: string;
|
|
9
|
+
language: 'javascript' | 'typescript' | 'python' | 'bash';
|
|
10
|
+
options?: SandboxOptions;
|
|
11
|
+
}
|
|
12
|
+
export declare class SandboxExecutor {
|
|
13
|
+
private dockerSandbox;
|
|
14
|
+
private useDocker;
|
|
15
|
+
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Initialize sandbox executor
|
|
18
|
+
* Check availability of Docker/WASM
|
|
19
|
+
*/
|
|
20
|
+
private initialize;
|
|
21
|
+
/**
|
|
22
|
+
* Execute code in secure sandbox
|
|
23
|
+
*/
|
|
24
|
+
execute(request: CodeExecutionRequest): Promise<SandboxResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Execute bash command in sandbox
|
|
27
|
+
*/
|
|
28
|
+
executeBash(command: string, options?: SandboxOptions): Promise<SandboxResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Check if sandbox is available
|
|
31
|
+
*/
|
|
32
|
+
isAvailable(): Promise<boolean>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=sandbox-executor.d.ts.map
|