circle-ir-ai 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +105 -0
- package/LICENSE +15 -0
- package/README.md +336 -0
- package/dist/action-queue/aggregator.d.ts +40 -0
- package/dist/action-queue/aggregator.d.ts.map +1 -0
- package/dist/action-queue/aggregator.js +375 -0
- package/dist/action-queue/aggregator.js.map +1 -0
- package/dist/action-queue/index.d.ts +14 -0
- package/dist/action-queue/index.d.ts.map +1 -0
- package/dist/action-queue/index.js +17 -0
- package/dist/action-queue/index.js.map +1 -0
- package/dist/action-queue/queue.d.ts +74 -0
- package/dist/action-queue/queue.d.ts.map +1 -0
- package/dist/action-queue/queue.js +433 -0
- package/dist/action-queue/queue.js.map +1 -0
- package/dist/action-queue/types.d.ts +162 -0
- package/dist/action-queue/types.d.ts.map +1 -0
- package/dist/action-queue/types.js +44 -0
- package/dist/action-queue/types.js.map +1 -0
- package/dist/agents/enrichment-agent.d.ts +16 -0
- package/dist/agents/enrichment-agent.d.ts.map +1 -0
- package/dist/agents/enrichment-agent.js +102 -0
- package/dist/agents/enrichment-agent.js.map +1 -0
- package/dist/agents/index.d.ts +12 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +15 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/mastra/agents.d.ts +373 -0
- package/dist/agents/mastra/agents.d.ts.map +1 -0
- package/dist/agents/mastra/agents.js +347 -0
- package/dist/agents/mastra/agents.js.map +1 -0
- package/dist/agents/mastra/index.d.ts +12 -0
- package/dist/agents/mastra/index.d.ts.map +1 -0
- package/dist/agents/mastra/index.js +17 -0
- package/dist/agents/mastra/index.js.map +1 -0
- package/dist/agents/mastra/instance.d.ts +383 -0
- package/dist/agents/mastra/instance.d.ts.map +1 -0
- package/dist/agents/mastra/instance.js +37 -0
- package/dist/agents/mastra/instance.js.map +1 -0
- package/dist/agents/mastra/steps.d.ts +300 -0
- package/dist/agents/mastra/steps.d.ts.map +1 -0
- package/dist/agents/mastra/steps.js +468 -0
- package/dist/agents/mastra/steps.js.map +1 -0
- package/dist/agents/mastra/swarm.d.ts +106 -0
- package/dist/agents/mastra/swarm.d.ts.map +1 -0
- package/dist/agents/mastra/swarm.js +501 -0
- package/dist/agents/mastra/swarm.js.map +1 -0
- package/dist/agents/mastra/workflow.d.ts +81 -0
- package/dist/agents/mastra/workflow.d.ts.map +1 -0
- package/dist/agents/mastra/workflow.js +460 -0
- package/dist/agents/mastra/workflow.js.map +1 -0
- package/dist/agents/multi/agents/security.d.ts +29 -0
- package/dist/agents/multi/agents/security.d.ts.map +1 -0
- package/dist/agents/multi/agents/security.js +830 -0
- package/dist/agents/multi/agents/security.js.map +1 -0
- package/dist/agents/multi/extractor.d.ts +21 -0
- package/dist/agents/multi/extractor.d.ts.map +1 -0
- package/dist/agents/multi/extractor.js +483 -0
- package/dist/agents/multi/extractor.js.map +1 -0
- package/dist/agents/multi/index.d.ts +32 -0
- package/dist/agents/multi/index.d.ts.map +1 -0
- package/dist/agents/multi/index.js +34 -0
- package/dist/agents/multi/index.js.map +1 -0
- package/dist/agents/multi/runner.d.ts +79 -0
- package/dist/agents/multi/runner.d.ts.map +1 -0
- package/dist/agents/multi/runner.js +323 -0
- package/dist/agents/multi/runner.js.map +1 -0
- package/dist/agents/security-agent.d.ts +16 -0
- package/dist/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/security-agent.js +299 -0
- package/dist/agents/security-agent.js.map +1 -0
- package/dist/agents/types.d.ts +373 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +14 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/agents/verification-agent.d.ts +23 -0
- package/dist/agents/verification-agent.d.ts.map +1 -0
- package/dist/agents/verification-agent.js +217 -0
- package/dist/agents/verification-agent.js.map +1 -0
- package/dist/agents/workflow.d.ts +30 -0
- package/dist/agents/workflow.d.ts.map +1 -0
- package/dist/agents/workflow.js +79 -0
- package/dist/agents/workflow.js.map +1 -0
- package/dist/analysis/enriched.d.ts +16 -0
- package/dist/analysis/enriched.d.ts.map +1 -0
- package/dist/analysis/enriched.js +297 -0
- package/dist/analysis/enriched.js.map +1 -0
- package/dist/analysis/llm-correlated-predicates.d.ts +80 -0
- package/dist/analysis/llm-correlated-predicates.d.ts.map +1 -0
- package/dist/analysis/llm-correlated-predicates.js +255 -0
- package/dist/analysis/llm-correlated-predicates.js.map +1 -0
- package/dist/analysis/llm-cross-file-taint.d.ts +86 -0
- package/dist/analysis/llm-cross-file-taint.d.ts.map +1 -0
- package/dist/analysis/llm-cross-file-taint.js +264 -0
- package/dist/analysis/llm-cross-file-taint.js.map +1 -0
- package/dist/analysis/pattern-discovery.d.ts +79 -0
- package/dist/analysis/pattern-discovery.d.ts.map +1 -0
- package/dist/analysis/pattern-discovery.js +447 -0
- package/dist/analysis/pattern-discovery.js.map +1 -0
- package/dist/cache/file-cache.d.ts +89 -0
- package/dist/cache/file-cache.d.ts.map +1 -0
- package/dist/cache/file-cache.js +208 -0
- package/dist/cache/file-cache.js.map +1 -0
- package/dist/cache/index.d.ts +6 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cli/args.d.ts +52 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +422 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/colors.d.ts +31 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +80 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands/analyze-skill.d.ts +33 -0
- package/dist/cli/commands/analyze-skill.d.ts.map +1 -0
- package/dist/cli/commands/analyze-skill.js +217 -0
- package/dist/cli/commands/analyze-skill.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +18 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +30 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/benchmark-runner.d.ts +42 -0
- package/dist/cli/commands/benchmark-runner.d.ts.map +1 -0
- package/dist/cli/commands/benchmark-runner.js +18 -0
- package/dist/cli/commands/benchmark-runner.js.map +1 -0
- package/dist/cli/commands/benchmark.d.ts +11 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +90 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/dead-code.d.ts +11 -0
- package/dist/cli/commands/dead-code.d.ts.map +1 -0
- package/dist/cli/commands/dead-code.js +65 -0
- package/dist/cli/commands/dead-code.js.map +1 -0
- package/dist/cli/commands/generate-spec.d.ts +11 -0
- package/dist/cli/commands/generate-spec.d.ts.map +1 -0
- package/dist/cli/commands/generate-spec.js +67 -0
- package/dist/cli/commands/generate-spec.js.map +1 -0
- package/dist/cli/commands/health.d.ts +11 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +67 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/project.d.ts +21 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +92 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +11 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +68 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/secrets.d.ts +11 -0
- package/dist/cli/commands/secrets.d.ts.map +1 -0
- package/dist/cli/commands/secrets.js +71 -0
- package/dist/cli/commands/secrets.js.map +1 -0
- package/dist/cli/commands/swarm.d.ts +20 -0
- package/dist/cli/commands/swarm.d.ts.map +1 -0
- package/dist/cli/commands/swarm.js +174 -0
- package/dist/cli/commands/swarm.js.map +1 -0
- package/dist/cli/config.d.ts +103 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +307 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/discovery.d.ts +31 -0
- package/dist/cli/discovery.d.ts.map +1 -0
- package/dist/cli/discovery.js +212 -0
- package/dist/cli/discovery.js.map +1 -0
- package/dist/cli/formatters/index.d.ts +15 -0
- package/dist/cli/formatters/index.d.ts.map +1 -0
- package/dist/cli/formatters/index.js +51 -0
- package/dist/cli/formatters/index.js.map +1 -0
- package/dist/cli/formatters/json.d.ts +11 -0
- package/dist/cli/formatters/json.d.ts.map +1 -0
- package/dist/cli/formatters/json.js +12 -0
- package/dist/cli/formatters/json.js.map +1 -0
- package/dist/cli/formatters/project-json.d.ts +11 -0
- package/dist/cli/formatters/project-json.d.ts.map +1 -0
- package/dist/cli/formatters/project-json.js +12 -0
- package/dist/cli/formatters/project-json.js.map +1 -0
- package/dist/cli/formatters/project-sarif.d.ts +11 -0
- package/dist/cli/formatters/project-sarif.d.ts.map +1 -0
- package/dist/cli/formatters/project-sarif.js +127 -0
- package/dist/cli/formatters/project-sarif.js.map +1 -0
- package/dist/cli/formatters/project-summary.d.ts +11 -0
- package/dist/cli/formatters/project-summary.d.ts.map +1 -0
- package/dist/cli/formatters/project-summary.js +202 -0
- package/dist/cli/formatters/project-summary.js.map +1 -0
- package/dist/cli/formatters/sarif-shared.d.ts +101 -0
- package/dist/cli/formatters/sarif-shared.d.ts.map +1 -0
- package/dist/cli/formatters/sarif-shared.js +57 -0
- package/dist/cli/formatters/sarif-shared.js.map +1 -0
- package/dist/cli/formatters/sarif.d.ts +12 -0
- package/dist/cli/formatters/sarif.d.ts.map +1 -0
- package/dist/cli/formatters/sarif.js +92 -0
- package/dist/cli/formatters/sarif.js.map +1 -0
- package/dist/cli/formatters/summary.d.ts +11 -0
- package/dist/cli/formatters/summary.d.ts.map +1 -0
- package/dist/cli/formatters/summary.js +240 -0
- package/dist/cli/formatters/summary.js.map +1 -0
- package/dist/cli/formatters/two-phase-summary.d.ts +11 -0
- package/dist/cli/formatters/two-phase-summary.d.ts.map +1 -0
- package/dist/cli/formatters/two-phase-summary.js +188 -0
- package/dist/cli/formatters/two-phase-summary.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +555 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/components/clustering.d.ts +60 -0
- package/dist/components/clustering.d.ts.map +1 -0
- package/dist/components/clustering.js +129 -0
- package/dist/components/clustering.js.map +1 -0
- package/dist/components/enrichment.d.ts +45 -0
- package/dist/components/enrichment.d.ts.map +1 -0
- package/dist/components/enrichment.js +193 -0
- package/dist/components/enrichment.js.map +1 -0
- package/dist/components/index.d.ts +29 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +56 -0
- package/dist/components/index.js.map +1 -0
- package/dist/dead-code/detector.d.ts +200 -0
- package/dist/dead-code/detector.d.ts.map +1 -0
- package/dist/dead-code/detector.js +1003 -0
- package/dist/dead-code/detector.js.map +1 -0
- package/dist/dead-code/index.d.ts +7 -0
- package/dist/dead-code/index.d.ts.map +1 -0
- package/dist/dead-code/index.js +7 -0
- package/dist/dead-code/index.js.map +1 -0
- package/dist/extractors/index.d.ts +15 -0
- package/dist/extractors/index.d.ts.map +1 -0
- package/dist/extractors/index.js +14 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/natural-language.d.ts +46 -0
- package/dist/extractors/natural-language.d.ts.map +1 -0
- package/dist/extractors/natural-language.js +228 -0
- package/dist/extractors/natural-language.js.map +1 -0
- package/dist/extractors/tree-sitter.d.ts +33 -0
- package/dist/extractors/tree-sitter.d.ts.map +1 -0
- package/dist/extractors/tree-sitter.js +69 -0
- package/dist/extractors/tree-sitter.js.map +1 -0
- package/dist/extractors/types.d.ts +62 -0
- package/dist/extractors/types.d.ts.map +1 -0
- package/dist/extractors/types.js +54 -0
- package/dist/extractors/types.js.map +1 -0
- package/dist/health-score/calculator.d.ts +123 -0
- package/dist/health-score/calculator.d.ts.map +1 -0
- package/dist/health-score/calculator.js +444 -0
- package/dist/health-score/calculator.js.map +1 -0
- package/dist/health-score/index.d.ts +12 -0
- package/dist/health-score/index.d.ts.map +1 -0
- package/dist/health-score/index.js +14 -0
- package/dist/health-score/index.js.map +1 -0
- package/dist/health-score/metrics.d.ts +142 -0
- package/dist/health-score/metrics.d.ts.map +1 -0
- package/dist/health-score/metrics.js +332 -0
- package/dist/health-score/metrics.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/ax-client.d.ts +477 -0
- package/dist/llm/ax-client.d.ts.map +1 -0
- package/dist/llm/ax-client.js +1641 -0
- package/dist/llm/ax-client.js.map +1 -0
- package/dist/llm/config.d.ts +58 -0
- package/dist/llm/config.d.ts.map +1 -0
- package/dist/llm/config.js +97 -0
- package/dist/llm/config.js.map +1 -0
- package/dist/llm/discovery.d.ts +123 -0
- package/dist/llm/discovery.d.ts.map +1 -0
- package/dist/llm/discovery.js +505 -0
- package/dist/llm/discovery.js.map +1 -0
- package/dist/llm/enrichment.d.ts +108 -0
- package/dist/llm/enrichment.d.ts.map +1 -0
- package/dist/llm/enrichment.js +312 -0
- package/dist/llm/enrichment.js.map +1 -0
- package/dist/llm/index.d.ts +13 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +22 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/language-context.d.ts +64 -0
- package/dist/llm/language-context.d.ts.map +1 -0
- package/dist/llm/language-context.js +492 -0
- package/dist/llm/language-context.js.map +1 -0
- package/dist/llm/pattern-verification.d.ts +39 -0
- package/dist/llm/pattern-verification.d.ts.map +1 -0
- package/dist/llm/pattern-verification.js +127 -0
- package/dist/llm/pattern-verification.js.map +1 -0
- package/dist/llm/prompt-security.d.ts +120 -0
- package/dist/llm/prompt-security.d.ts.map +1 -0
- package/dist/llm/prompt-security.js +301 -0
- package/dist/llm/prompt-security.js.map +1 -0
- package/dist/llm/prompts/index.d.ts +31 -0
- package/dist/llm/prompts/index.d.ts.map +1 -0
- package/dist/llm/prompts/index.js +92 -0
- package/dist/llm/prompts/index.js.map +1 -0
- package/dist/llm/prompts/rust.d.ts +30 -0
- package/dist/llm/prompts/rust.d.ts.map +1 -0
- package/dist/llm/prompts/rust.js +121 -0
- package/dist/llm/prompts/rust.js.map +1 -0
- package/dist/llm/schemas.d.ts +892 -0
- package/dist/llm/schemas.d.ts.map +1 -0
- package/dist/llm/schemas.js +258 -0
- package/dist/llm/schemas.js.map +1 -0
- package/dist/llm/verification.d.ts +127 -0
- package/dist/llm/verification.d.ts.map +1 -0
- package/dist/llm/verification.js +394 -0
- package/dist/llm/verification.js.map +1 -0
- package/dist/project/analyzer.d.ts +30 -0
- package/dist/project/analyzer.d.ts.map +1 -0
- package/dist/project/analyzer.js +358 -0
- package/dist/project/analyzer.js.map +1 -0
- package/dist/project/call-graph.d.ts +22 -0
- package/dist/project/call-graph.d.ts.map +1 -0
- package/dist/project/call-graph.js +246 -0
- package/dist/project/call-graph.js.map +1 -0
- package/dist/project/index.d.ts +18 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +20 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/taint-paths.d.ts +22 -0
- package/dist/project/taint-paths.d.ts.map +1 -0
- package/dist/project/taint-paths.js +265 -0
- package/dist/project/taint-paths.js.map +1 -0
- package/dist/project/two-phase-analyzer.d.ts +143 -0
- package/dist/project/two-phase-analyzer.d.ts.map +1 -0
- package/dist/project/two-phase-analyzer.js +646 -0
- package/dist/project/two-phase-analyzer.js.map +1 -0
- package/dist/project/type-hierarchy.d.ts +28 -0
- package/dist/project/type-hierarchy.d.ts.map +1 -0
- package/dist/project/type-hierarchy.js +218 -0
- package/dist/project/type-hierarchy.js.map +1 -0
- package/dist/secret-scan/index.d.ts +12 -0
- package/dist/secret-scan/index.d.ts.map +1 -0
- package/dist/secret-scan/index.js +14 -0
- package/dist/secret-scan/index.js.map +1 -0
- package/dist/secret-scan/patterns.d.ts +38 -0
- package/dist/secret-scan/patterns.d.ts.map +1 -0
- package/dist/secret-scan/patterns.js +473 -0
- package/dist/secret-scan/patterns.js.map +1 -0
- package/dist/secret-scan/scanner.d.ts +162 -0
- package/dist/secret-scan/scanner.d.ts.map +1 -0
- package/dist/secret-scan/scanner.js +511 -0
- package/dist/secret-scan/scanner.js.map +1 -0
- package/dist/security-scan/index.d.ts +12 -0
- package/dist/security-scan/index.d.ts.map +1 -0
- package/dist/security-scan/index.js +15 -0
- package/dist/security-scan/index.js.map +1 -0
- package/dist/security-scan/owasp-mapping.d.ts +29 -0
- package/dist/security-scan/owasp-mapping.d.ts.map +1 -0
- package/dist/security-scan/owasp-mapping.js +246 -0
- package/dist/security-scan/owasp-mapping.js.map +1 -0
- package/dist/security-scan/scanner.d.ts +204 -0
- package/dist/security-scan/scanner.d.ts.map +1 -0
- package/dist/security-scan/scanner.js +693 -0
- package/dist/security-scan/scanner.js.map +1 -0
- package/dist/security-scan/trend-tracker.d.ts +150 -0
- package/dist/security-scan/trend-tracker.d.ts.map +1 -0
- package/dist/security-scan/trend-tracker.js +299 -0
- package/dist/security-scan/trend-tracker.js.map +1 -0
- package/dist/skills/bundle-loader.d.ts +26 -0
- package/dist/skills/bundle-loader.d.ts.map +1 -0
- package/dist/skills/bundle-loader.js +284 -0
- package/dist/skills/bundle-loader.js.map +1 -0
- package/dist/skills/capability-mismatch.d.ts +21 -0
- package/dist/skills/capability-mismatch.d.ts.map +1 -0
- package/dist/skills/capability-mismatch.js +188 -0
- package/dist/skills/capability-mismatch.js.map +1 -0
- package/dist/skills/index.d.ts +10 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +9 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-analyzer.d.ts +16 -0
- package/dist/skills/skill-analyzer.d.ts.map +1 -0
- package/dist/skills/skill-analyzer.js +361 -0
- package/dist/skills/skill-analyzer.js.map +1 -0
- package/dist/skills/types.d.ts +195 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +7 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/specifica/conflict-resolver.d.ts +23 -0
- package/dist/specifica/conflict-resolver.d.ts.map +1 -0
- package/dist/specifica/conflict-resolver.js +129 -0
- package/dist/specifica/conflict-resolver.js.map +1 -0
- package/dist/specifica/evidence-aggregator.d.ts +33 -0
- package/dist/specifica/evidence-aggregator.d.ts.map +1 -0
- package/dist/specifica/evidence-aggregator.js +236 -0
- package/dist/specifica/evidence-aggregator.js.map +1 -0
- package/dist/specifica/evidence-extractor.d.ts +13 -0
- package/dist/specifica/evidence-extractor.d.ts.map +1 -0
- package/dist/specifica/evidence-extractor.js +431 -0
- package/dist/specifica/evidence-extractor.js.map +1 -0
- package/dist/specifica/feature-clustering.d.ts +19 -0
- package/dist/specifica/feature-clustering.d.ts.map +1 -0
- package/dist/specifica/feature-clustering.js +231 -0
- package/dist/specifica/feature-clustering.js.map +1 -0
- package/dist/specifica/generator.d.ts +16 -0
- package/dist/specifica/generator.d.ts.map +1 -0
- package/dist/specifica/generator.js +277 -0
- package/dist/specifica/generator.js.map +1 -0
- package/dist/specifica/index.d.ts +15 -0
- package/dist/specifica/index.d.ts.map +1 -0
- package/dist/specifica/index.js +18 -0
- package/dist/specifica/index.js.map +1 -0
- package/dist/specifica/prompts.d.ts +21 -0
- package/dist/specifica/prompts.d.ts.map +1 -0
- package/dist/specifica/prompts.js +196 -0
- package/dist/specifica/prompts.js.map +1 -0
- package/dist/specifica/spec-generator.d.ts +22 -0
- package/dist/specifica/spec-generator.d.ts.map +1 -0
- package/dist/specifica/spec-generator.js +229 -0
- package/dist/specifica/spec-generator.js.map +1 -0
- package/dist/specifica/types.d.ts +213 -0
- package/dist/specifica/types.d.ts.map +1 -0
- package/dist/specifica/types.js +7 -0
- package/dist/specifica/types.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +51 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Analyzer
|
|
3
|
+
*
|
|
4
|
+
* Main orchestrator for analyzing AI skill bundles.
|
|
5
|
+
* Coordinates extraction, taint analysis, and cross-artifact reasoning.
|
|
6
|
+
*/
|
|
7
|
+
import { loadSkillBundle, validateSkillBundle } from './bundle-loader.js';
|
|
8
|
+
import { createDefaultExtractorRegistry } from '../extractors/index.js';
|
|
9
|
+
import { detectCapabilityMismatches } from './capability-mismatch.js';
|
|
10
|
+
/**
|
|
11
|
+
* Analyze a skill bundle
|
|
12
|
+
*
|
|
13
|
+
* @param skillPath - Path to skill directory
|
|
14
|
+
* @param options - Analysis options
|
|
15
|
+
* @returns Analysis result with findings and trust score
|
|
16
|
+
*/
|
|
17
|
+
export async function analyzeSkillBundle(skillPath, options = {}) {
|
|
18
|
+
const startTime = Date.now();
|
|
19
|
+
// Default options
|
|
20
|
+
const { enableCrossArtifact = true, enableVerification = true, minConfidence = 0.7, minSeverity = 'low', onProgress, } = options;
|
|
21
|
+
try {
|
|
22
|
+
// Phase 1: Load skill bundle
|
|
23
|
+
onProgress?.({
|
|
24
|
+
phase: 'loading',
|
|
25
|
+
progress: 0,
|
|
26
|
+
message: 'Loading skill bundle...',
|
|
27
|
+
});
|
|
28
|
+
const bundle = await loadSkillBundle(skillPath);
|
|
29
|
+
// Validate bundle structure
|
|
30
|
+
const validationErrors = await validateSkillBundle(bundle);
|
|
31
|
+
if (validationErrors.length > 0) {
|
|
32
|
+
throw new Error(`Invalid skill bundle: ${validationErrors.join(', ')}`);
|
|
33
|
+
}
|
|
34
|
+
onProgress?.({
|
|
35
|
+
phase: 'loading',
|
|
36
|
+
progress: 10,
|
|
37
|
+
message: `Loaded skill: ${bundle.name}`,
|
|
38
|
+
});
|
|
39
|
+
// Phase 2: Extract CircleIR from all artifacts
|
|
40
|
+
onProgress?.({
|
|
41
|
+
phase: 'extracting',
|
|
42
|
+
progress: 20,
|
|
43
|
+
message: 'Extracting from artifacts...',
|
|
44
|
+
});
|
|
45
|
+
const extracted = await extractAllArtifacts(bundle, onProgress);
|
|
46
|
+
onProgress?.({
|
|
47
|
+
phase: 'extracting',
|
|
48
|
+
progress: 50,
|
|
49
|
+
message: `Extracted ${extracted.length} artifacts`,
|
|
50
|
+
});
|
|
51
|
+
// Phase 3: Run unified taint analysis
|
|
52
|
+
onProgress?.({
|
|
53
|
+
phase: 'analyzing',
|
|
54
|
+
progress: 60,
|
|
55
|
+
message: 'Running taint analysis...',
|
|
56
|
+
});
|
|
57
|
+
const findings = await analyzeExtractedArtifacts(bundle, extracted, enableCrossArtifact, onProgress);
|
|
58
|
+
onProgress?.({
|
|
59
|
+
phase: 'analyzing',
|
|
60
|
+
progress: 80,
|
|
61
|
+
message: `Found ${findings.length} potential issues`,
|
|
62
|
+
});
|
|
63
|
+
// Phase 4: Filter by confidence and severity
|
|
64
|
+
const filteredFindings = findings.filter((f) => f.confidence >= minConfidence && compareSeverity(f.severity, minSeverity) >= 0);
|
|
65
|
+
// Phase 5: Calculate trust score
|
|
66
|
+
const score = calculateTrustScore(filteredFindings);
|
|
67
|
+
// Phase 6: Generate recommendations
|
|
68
|
+
const recommendations = generateRecommendations(filteredFindings);
|
|
69
|
+
onProgress?.({
|
|
70
|
+
phase: 'reporting',
|
|
71
|
+
progress: 100,
|
|
72
|
+
message: 'Analysis complete',
|
|
73
|
+
});
|
|
74
|
+
const endTime = Date.now();
|
|
75
|
+
return {
|
|
76
|
+
skillId: bundle.skillId,
|
|
77
|
+
name: bundle.name,
|
|
78
|
+
version: bundle.version,
|
|
79
|
+
findings: filteredFindings,
|
|
80
|
+
score,
|
|
81
|
+
recommendations,
|
|
82
|
+
metadata: {
|
|
83
|
+
timestamp: new Date().toISOString(),
|
|
84
|
+
durationMs: endTime - startTime,
|
|
85
|
+
artifactsAnalyzed: extracted.map((e) => e.artifact),
|
|
86
|
+
extractorsUsed: [...new Set(extracted.map((e) => e.extractor))],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
throw new Error(`Skill analysis failed: ${error instanceof Error ? error.message : error}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Extract CircleIR from all artifacts in the bundle
|
|
96
|
+
*/
|
|
97
|
+
async function extractAllArtifacts(bundle, onProgress) {
|
|
98
|
+
const extracted = [];
|
|
99
|
+
const registry = await createDefaultExtractorRegistry();
|
|
100
|
+
// Extract from SKILL.md
|
|
101
|
+
const skillMdExtractor = registry.findExtractor('SKILL.md');
|
|
102
|
+
if (skillMdExtractor) {
|
|
103
|
+
onProgress?.({
|
|
104
|
+
phase: 'extracting',
|
|
105
|
+
artifact: 'SKILL.md',
|
|
106
|
+
progress: 25,
|
|
107
|
+
message: 'Extracting from SKILL.md...',
|
|
108
|
+
});
|
|
109
|
+
const startTime = Date.now();
|
|
110
|
+
const ir = await skillMdExtractor.extract(bundle.skillMd, 'SKILL.md');
|
|
111
|
+
const extractionTimeMs = Date.now() - startTime;
|
|
112
|
+
extracted.push({
|
|
113
|
+
artifact: 'SKILL.md',
|
|
114
|
+
ir,
|
|
115
|
+
extractor: skillMdExtractor.name,
|
|
116
|
+
extractionTimeMs,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// Extract from code files
|
|
120
|
+
let codeProgress = 0;
|
|
121
|
+
for (const file of bundle.codeFiles) {
|
|
122
|
+
const extractor = registry.findExtractor(file.path);
|
|
123
|
+
if (extractor) {
|
|
124
|
+
codeProgress++;
|
|
125
|
+
const progressPercent = 25 + (codeProgress / bundle.codeFiles.length) * 20;
|
|
126
|
+
onProgress?.({
|
|
127
|
+
phase: 'extracting',
|
|
128
|
+
artifact: file.path,
|
|
129
|
+
progress: progressPercent,
|
|
130
|
+
message: `Extracting from ${file.path}...`,
|
|
131
|
+
});
|
|
132
|
+
const startTime = Date.now();
|
|
133
|
+
const ir = await extractor.extract(file.content, file.path);
|
|
134
|
+
const extractionTimeMs = Date.now() - startTime;
|
|
135
|
+
extracted.push({
|
|
136
|
+
artifact: file.path,
|
|
137
|
+
ir,
|
|
138
|
+
extractor: extractor.name,
|
|
139
|
+
extractionTimeMs,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return extracted;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Analyze extracted artifacts and generate findings
|
|
147
|
+
*/
|
|
148
|
+
async function analyzeExtractedArtifacts(bundle, extracted, enableCrossArtifact, onProgress) {
|
|
149
|
+
const findings = [];
|
|
150
|
+
// Collect all vulnerabilities from individual artifacts
|
|
151
|
+
// IMPORTANT: Skip SKILL.md - it declares capabilities, not vulnerabilities
|
|
152
|
+
for (const artifact of extracted) {
|
|
153
|
+
if (artifact.artifact === 'SKILL.md') {
|
|
154
|
+
// SKILL.md is only used for capability mismatch detection (cross-artifact analysis)
|
|
155
|
+
// Its sinks represent DECLARED capabilities, not actual vulnerabilities
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const artifactFindings = extractFindingsFromIR(artifact.ir, artifact.artifact);
|
|
159
|
+
findings.push(...artifactFindings);
|
|
160
|
+
}
|
|
161
|
+
// Cross-artifact analysis (capability mismatch detection)
|
|
162
|
+
if (enableCrossArtifact) {
|
|
163
|
+
onProgress?.({
|
|
164
|
+
phase: 'analyzing',
|
|
165
|
+
progress: 70,
|
|
166
|
+
message: 'Detecting capability mismatches...',
|
|
167
|
+
});
|
|
168
|
+
const skillMdIR = extracted.find((e) => e.artifact === 'SKILL.md')?.ir;
|
|
169
|
+
const codeIRs = extracted.filter((e) => e.artifact !== 'SKILL.md');
|
|
170
|
+
if (skillMdIR && codeIRs.length > 0) {
|
|
171
|
+
const mismatches = await detectCapabilityMismatches(skillMdIR, codeIRs);
|
|
172
|
+
findings.push(...mismatches);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Deduplicate findings (same vulnerability detected multiple times)
|
|
176
|
+
const deduplicated = deduplicateFindings(findings);
|
|
177
|
+
return deduplicated;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Extract findings from CircleIR
|
|
181
|
+
*/
|
|
182
|
+
function extractFindingsFromIR(ir, artifact) {
|
|
183
|
+
const findings = [];
|
|
184
|
+
// Extract vulnerability findings from sources/sinks
|
|
185
|
+
const { sources, sinks } = ir.taint;
|
|
186
|
+
// For now, create findings from sinks (vulnerabilities)
|
|
187
|
+
for (const sink of sinks || []) {
|
|
188
|
+
// FILTER: Skip common false positives in validation functions
|
|
189
|
+
if (isLikelyValidationCodeFalsePositive(sink)) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
// Determine severity from CWE (simplified)
|
|
193
|
+
const severity = getSeverityFromCWE(sink.cwe);
|
|
194
|
+
findings.push({
|
|
195
|
+
type: 'vulnerability',
|
|
196
|
+
severity,
|
|
197
|
+
artifact,
|
|
198
|
+
title: `${sink.type} vulnerability`,
|
|
199
|
+
description: `Potential ${sink.type} at ${sink.location}`,
|
|
200
|
+
evidence: {
|
|
201
|
+
sink,
|
|
202
|
+
cwe: sink.cwe,
|
|
203
|
+
location: sink.location,
|
|
204
|
+
},
|
|
205
|
+
confidence: sink.confidence || 0.8,
|
|
206
|
+
cwe: sink.cwe,
|
|
207
|
+
location: {
|
|
208
|
+
line: sink.line,
|
|
209
|
+
snippet: sink.location,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return findings;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if a sink is likely a false positive from validation code
|
|
217
|
+
*
|
|
218
|
+
* Common patterns:
|
|
219
|
+
* - path.resolve() inside validatePath() function
|
|
220
|
+
* - path.resolve() followed by startsWith() check
|
|
221
|
+
* - File operations inside validation functions
|
|
222
|
+
*/
|
|
223
|
+
function isLikelyValidationCodeFalsePositive(sink) {
|
|
224
|
+
const location = sink.location?.toLowerCase() || '';
|
|
225
|
+
// Path traversal in validation functions (path.resolve in validatePath, validateInput, etc.)
|
|
226
|
+
if (sink.type === 'path_traversal' && sink.cwe === 'CWE-22') {
|
|
227
|
+
if (location.includes('validatepath') ||
|
|
228
|
+
location.includes('validateinput') ||
|
|
229
|
+
location.includes('sanitizepath') ||
|
|
230
|
+
location.includes('sanitizeinput') ||
|
|
231
|
+
location.includes('validate(') ||
|
|
232
|
+
location.includes('sanitize(')) {
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
// path.resolve() in validation contexts
|
|
236
|
+
if (location.includes('path.resolve') && location.includes('validate')) {
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get severity from CWE code (simplified heuristic)
|
|
244
|
+
*/
|
|
245
|
+
function getSeverityFromCWE(cwe) {
|
|
246
|
+
// SQL injection, command injection, code injection = critical
|
|
247
|
+
if (cwe.match(/CWE-(89|78|94)/)) {
|
|
248
|
+
return 'critical';
|
|
249
|
+
}
|
|
250
|
+
// XSS, path traversal, SSRF = high
|
|
251
|
+
if (cwe.match(/CWE-(79|22|918)/)) {
|
|
252
|
+
return 'high';
|
|
253
|
+
}
|
|
254
|
+
// Others = medium
|
|
255
|
+
return 'medium';
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Calculate trust score from findings (0.0-1.0)
|
|
259
|
+
*
|
|
260
|
+
* Perfect score: 1.0 (no issues)
|
|
261
|
+
* Failing score: 0.0 (critical issues)
|
|
262
|
+
*/
|
|
263
|
+
function calculateTrustScore(findings) {
|
|
264
|
+
if (findings.length === 0) {
|
|
265
|
+
return 1.0; // Perfect score
|
|
266
|
+
}
|
|
267
|
+
// Severity weights
|
|
268
|
+
const weights = {
|
|
269
|
+
critical: 1.0,
|
|
270
|
+
high: 0.7,
|
|
271
|
+
medium: 0.4,
|
|
272
|
+
low: 0.2,
|
|
273
|
+
info: 0.1,
|
|
274
|
+
};
|
|
275
|
+
// Calculate weighted penalty
|
|
276
|
+
let penalty = 0;
|
|
277
|
+
for (const finding of findings) {
|
|
278
|
+
const weight = weights[finding.severity];
|
|
279
|
+
const confidenceAdjusted = weight * finding.confidence;
|
|
280
|
+
penalty += confidenceAdjusted;
|
|
281
|
+
}
|
|
282
|
+
// Normalize to 0-1 scale (assuming max 10 critical issues = 0.0 score)
|
|
283
|
+
const maxPenalty = 10.0;
|
|
284
|
+
const score = Math.max(0, 1.0 - penalty / maxPenalty);
|
|
285
|
+
return Math.round(score * 100) / 100; // Round to 2 decimal places
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Generate actionable recommendations based on findings
|
|
289
|
+
*/
|
|
290
|
+
function generateRecommendations(findings) {
|
|
291
|
+
const recommendations = [];
|
|
292
|
+
// Group findings by type
|
|
293
|
+
const byType = new Map();
|
|
294
|
+
for (const finding of findings) {
|
|
295
|
+
const existing = byType.get(finding.type) || [];
|
|
296
|
+
existing.push(finding);
|
|
297
|
+
byType.set(finding.type, existing);
|
|
298
|
+
}
|
|
299
|
+
// Generate recommendations per type
|
|
300
|
+
if (byType.has('capability_mismatch')) {
|
|
301
|
+
recommendations.push('Update SKILL.md to accurately describe all capabilities and data access patterns');
|
|
302
|
+
}
|
|
303
|
+
if (byType.has('vulnerability')) {
|
|
304
|
+
const vulnFindings = byType.get('vulnerability');
|
|
305
|
+
const hasCritical = vulnFindings.some((f) => f.severity === 'critical');
|
|
306
|
+
if (hasCritical) {
|
|
307
|
+
recommendations.push('Fix critical vulnerabilities before deployment');
|
|
308
|
+
}
|
|
309
|
+
recommendations.push('Add input validation and sanitization for all user-controlled data');
|
|
310
|
+
}
|
|
311
|
+
if (byType.has('excessive_permission')) {
|
|
312
|
+
recommendations.push('Review and minimize MCP permissions to principle of least privilege');
|
|
313
|
+
}
|
|
314
|
+
if (byType.has('prompt_injection')) {
|
|
315
|
+
recommendations.push('Add prompt injection defenses to SKILL.md instructions');
|
|
316
|
+
}
|
|
317
|
+
if (recommendations.length === 0) {
|
|
318
|
+
recommendations.push('No critical issues found - skill passes security analysis');
|
|
319
|
+
}
|
|
320
|
+
return recommendations;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Compare severity levels
|
|
324
|
+
* Returns: 1 if a > b, 0 if a === b, -1 if a < b
|
|
325
|
+
*/
|
|
326
|
+
function compareSeverity(a, b) {
|
|
327
|
+
const order = ['info', 'low', 'medium', 'high', 'critical'];
|
|
328
|
+
const aIndex = order.indexOf(a);
|
|
329
|
+
const bIndex = order.indexOf(b);
|
|
330
|
+
return Math.sign(aIndex - bIndex);
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Deduplicate findings based on unique characteristics
|
|
334
|
+
*
|
|
335
|
+
* Two findings are considered duplicates if they have:
|
|
336
|
+
* - Same artifact
|
|
337
|
+
* - Same type
|
|
338
|
+
* - Same CWE (if present)
|
|
339
|
+
* - Same location line (if present)
|
|
340
|
+
*
|
|
341
|
+
* When duplicates are found, keeps the one with highest confidence.
|
|
342
|
+
*/
|
|
343
|
+
function deduplicateFindings(findings) {
|
|
344
|
+
const uniqueMap = new Map();
|
|
345
|
+
for (const finding of findings) {
|
|
346
|
+
// Create unique key
|
|
347
|
+
const key = [
|
|
348
|
+
finding.artifact,
|
|
349
|
+
finding.type,
|
|
350
|
+
finding.cwe || 'no-cwe',
|
|
351
|
+
finding.location?.line || 'no-line',
|
|
352
|
+
].join('|');
|
|
353
|
+
const existing = uniqueMap.get(key);
|
|
354
|
+
// Keep the finding with higher confidence
|
|
355
|
+
if (!existing || finding.confidence > existing.confidence) {
|
|
356
|
+
uniqueMap.set(key, finding);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return Array.from(uniqueMap.values());
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=skill-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-analyzer.js","sourceRoot":"","sources":["../../src/skills/skill-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Analysis Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for AI skill bundles and analysis results.
|
|
5
|
+
*/
|
|
6
|
+
import type { CircleIR } from 'circle-ir';
|
|
7
|
+
/**
|
|
8
|
+
* Skill Bundle - A complete AI skill package
|
|
9
|
+
*
|
|
10
|
+
* Skills are multi-artifact bundles containing:
|
|
11
|
+
* - SKILL.md: Natural language instructions (executed by LLM)
|
|
12
|
+
* - Code files: Implementation (executed by runtime)
|
|
13
|
+
* - MCP config: Permissions and tool definitions
|
|
14
|
+
* - Plugin files: Additional code
|
|
15
|
+
*/
|
|
16
|
+
export interface SkillBundle {
|
|
17
|
+
/** Unique skill identifier */
|
|
18
|
+
skillId: string;
|
|
19
|
+
/** Human-readable name */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Semantic version */
|
|
22
|
+
version: string;
|
|
23
|
+
/** SKILL.md content (instructions executed by LLM) */
|
|
24
|
+
skillMd: string;
|
|
25
|
+
/** Code implementation files */
|
|
26
|
+
codeFiles: SkillCodeFile[];
|
|
27
|
+
/** MCP server configuration (optional) */
|
|
28
|
+
mcpConfig?: MCPServerConfig;
|
|
29
|
+
/** Plugin files (optional) */
|
|
30
|
+
pluginFiles: SkillCodeFile[];
|
|
31
|
+
/** Root filesystem path */
|
|
32
|
+
rootPath: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Code file within a skill
|
|
36
|
+
*/
|
|
37
|
+
export interface SkillCodeFile {
|
|
38
|
+
/** Relative path within skill bundle */
|
|
39
|
+
path: string;
|
|
40
|
+
/** File content */
|
|
41
|
+
content: string;
|
|
42
|
+
/** Programming language */
|
|
43
|
+
language: 'java' | 'javascript' | 'typescript' | 'python' | 'rust';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* MCP (Model Context Protocol) Server Configuration
|
|
47
|
+
*/
|
|
48
|
+
export interface MCPServerConfig {
|
|
49
|
+
/** Server name */
|
|
50
|
+
name: string;
|
|
51
|
+
/** Server version */
|
|
52
|
+
version: string;
|
|
53
|
+
/** Requested permissions */
|
|
54
|
+
permissions: MCPPermission[];
|
|
55
|
+
/** Available tools */
|
|
56
|
+
tools: MCPTool[];
|
|
57
|
+
/** Available resources (optional) */
|
|
58
|
+
resources?: MCPResource[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* MCP Permission request
|
|
62
|
+
*/
|
|
63
|
+
export interface MCPPermission {
|
|
64
|
+
/** Permission type */
|
|
65
|
+
type: 'filesystem' | 'network' | 'env' | 'process';
|
|
66
|
+
/** Scope (path, URL pattern, env var name, etc.) */
|
|
67
|
+
scope: string;
|
|
68
|
+
/** Operations allowed */
|
|
69
|
+
operations: string[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* MCP Tool definition
|
|
73
|
+
*/
|
|
74
|
+
export interface MCPTool {
|
|
75
|
+
/** Tool name */
|
|
76
|
+
name: string;
|
|
77
|
+
/** Tool description */
|
|
78
|
+
description: string;
|
|
79
|
+
/** Input schema (JSON Schema) */
|
|
80
|
+
inputSchema: Record<string, unknown>;
|
|
81
|
+
/** Output schema (JSON Schema, optional) */
|
|
82
|
+
outputSchema?: Record<string, unknown>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* MCP Resource definition
|
|
86
|
+
*/
|
|
87
|
+
export interface MCPResource {
|
|
88
|
+
/** Resource URI */
|
|
89
|
+
uri: string;
|
|
90
|
+
/** Resource name */
|
|
91
|
+
name: string;
|
|
92
|
+
/** MIME type (optional) */
|
|
93
|
+
mimeType?: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Skill Analysis Result
|
|
97
|
+
*/
|
|
98
|
+
export interface SkillAnalysisResult {
|
|
99
|
+
/** Skill identifier */
|
|
100
|
+
skillId: string;
|
|
101
|
+
/** Skill name */
|
|
102
|
+
name: string;
|
|
103
|
+
/** Skill version */
|
|
104
|
+
version: string;
|
|
105
|
+
/** All findings */
|
|
106
|
+
findings: SkillFinding[];
|
|
107
|
+
/** Trust score (0.0-1.0) */
|
|
108
|
+
score: number;
|
|
109
|
+
/** Actionable recommendations */
|
|
110
|
+
recommendations: string[];
|
|
111
|
+
/** Analysis metadata */
|
|
112
|
+
metadata: {
|
|
113
|
+
/** Analysis timestamp */
|
|
114
|
+
timestamp: string;
|
|
115
|
+
/** Analysis duration (ms) */
|
|
116
|
+
durationMs: number;
|
|
117
|
+
/** Artifacts analyzed */
|
|
118
|
+
artifactsAnalyzed: string[];
|
|
119
|
+
/** Extractors used */
|
|
120
|
+
extractorsUsed: string[];
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Skill Finding - A security issue or observation
|
|
125
|
+
*/
|
|
126
|
+
export interface SkillFinding {
|
|
127
|
+
/** Finding type */
|
|
128
|
+
type: SkillFindingType;
|
|
129
|
+
/** Severity level */
|
|
130
|
+
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
131
|
+
/** Which artifact contains the issue */
|
|
132
|
+
artifact: string;
|
|
133
|
+
/** Short title */
|
|
134
|
+
title: string;
|
|
135
|
+
/** Detailed description */
|
|
136
|
+
description: string;
|
|
137
|
+
/** Supporting evidence */
|
|
138
|
+
evidence: Record<string, unknown>;
|
|
139
|
+
/** Confidence score (0.0-1.0) */
|
|
140
|
+
confidence: number;
|
|
141
|
+
/** CWE identifier (if applicable) */
|
|
142
|
+
cwe?: string;
|
|
143
|
+
/** Location in artifact */
|
|
144
|
+
location?: {
|
|
145
|
+
line?: number;
|
|
146
|
+
column?: number;
|
|
147
|
+
snippet?: string;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Skill Finding Types
|
|
152
|
+
*/
|
|
153
|
+
export type SkillFindingType = 'capability_mismatch' | 'excessive_permission' | 'undisclosed_exfiltration' | 'vulnerability' | 'prompt_injection' | 'social_engineering' | 'capability_escalation' | 'missing_sanitization' | 'insecure_defaults';
|
|
154
|
+
/**
|
|
155
|
+
* Skill Analysis Options
|
|
156
|
+
*/
|
|
157
|
+
export interface SkillAnalysisOptions {
|
|
158
|
+
/** Enable cross-artifact analysis (default: true) */
|
|
159
|
+
enableCrossArtifact?: boolean;
|
|
160
|
+
/** Enable LLM verification (default: true) */
|
|
161
|
+
enableVerification?: boolean;
|
|
162
|
+
/** Minimum confidence threshold for findings (default: 0.7) */
|
|
163
|
+
minConfidence?: number;
|
|
164
|
+
/** Minimum severity to report (default: 'low') */
|
|
165
|
+
minSeverity?: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
166
|
+
/** Progress callback */
|
|
167
|
+
onProgress?: (status: AnalysisProgress) => void;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Analysis progress status
|
|
171
|
+
*/
|
|
172
|
+
export interface AnalysisProgress {
|
|
173
|
+
/** Current phase */
|
|
174
|
+
phase: 'loading' | 'extracting' | 'analyzing' | 'verifying' | 'reporting';
|
|
175
|
+
/** Current artifact being processed */
|
|
176
|
+
artifact?: string;
|
|
177
|
+
/** Progress percentage (0-100) */
|
|
178
|
+
progress: number;
|
|
179
|
+
/** Status message */
|
|
180
|
+
message: string;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Extracted artifact (intermediate result)
|
|
184
|
+
*/
|
|
185
|
+
export interface ExtractedArtifact {
|
|
186
|
+
/** Artifact path */
|
|
187
|
+
artifact: string;
|
|
188
|
+
/** Extracted CircleIR */
|
|
189
|
+
ir: CircleIR;
|
|
190
|
+
/** Extractor used */
|
|
191
|
+
extractor: string;
|
|
192
|
+
/** Extraction time (ms) */
|
|
193
|
+
extractionTimeMs: number;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict Resolver
|
|
3
|
+
*
|
|
4
|
+
* Handles conflicts when .specifica/ files already exist
|
|
5
|
+
*/
|
|
6
|
+
import type { ConflictResolution } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Resolve conflict when spec file already exists
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveConflict(filePath: string, resolution: ConflictResolution): Promise<'skip' | 'overwrite' | 'merge' | 'rename'>;
|
|
11
|
+
/**
|
|
12
|
+
* Check if file exists
|
|
13
|
+
*/
|
|
14
|
+
export declare function fileExists(filePath: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get conflict strategy from CLI flags
|
|
17
|
+
*/
|
|
18
|
+
export declare function getConflictStrategy(flags: {
|
|
19
|
+
overwrite?: boolean;
|
|
20
|
+
skip?: boolean;
|
|
21
|
+
backup?: boolean;
|
|
22
|
+
}): ConflictResolution;
|
|
23
|
+
//# sourceMappingURL=conflict-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-resolver.d.ts","sourceRoot":"","sources":["../../src/specifica/conflict-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC,CA0BpD;AAiFD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,kBAAkB,CAiBrB"}
|