@oddessentials/odd-ai-reviewers 1.0.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/README.md +190 -0
- package/dist/__tests__/hermetic-setup.d.ts +55 -0
- package/dist/__tests__/hermetic-setup.d.ts.map +1 -0
- package/dist/__tests__/hermetic-setup.js +62 -0
- package/dist/__tests__/hermetic-setup.js.map +1 -0
- package/dist/__tests__/test-utils/hermetic.d.ts +84 -0
- package/dist/__tests__/test-utils/hermetic.d.ts.map +1 -0
- package/dist/__tests__/test-utils/hermetic.js +147 -0
- package/dist/__tests__/test-utils/hermetic.js.map +1 -0
- package/dist/agents/ai_semantic_review.d.ts +12 -0
- package/dist/agents/ai_semantic_review.d.ts.map +1 -0
- package/dist/agents/ai_semantic_review.js +317 -0
- package/dist/agents/ai_semantic_review.js.map +1 -0
- package/dist/agents/control_flow/budget.d.ts +162 -0
- package/dist/agents/control_flow/budget.d.ts.map +1 -0
- package/dist/agents/control_flow/budget.js +331 -0
- package/dist/agents/control_flow/budget.js.map +1 -0
- package/dist/agents/control_flow/cfg-builder.d.ts +26 -0
- package/dist/agents/control_flow/cfg-builder.d.ts.map +1 -0
- package/dist/agents/control_flow/cfg-builder.js +776 -0
- package/dist/agents/control_flow/cfg-builder.js.map +1 -0
- package/dist/agents/control_flow/cfg-types.d.ts +186 -0
- package/dist/agents/control_flow/cfg-types.d.ts.map +1 -0
- package/dist/agents/control_flow/cfg-types.js +114 -0
- package/dist/agents/control_flow/cfg-types.js.map +1 -0
- package/dist/agents/control_flow/finding-generator.d.ts +118 -0
- package/dist/agents/control_flow/finding-generator.d.ts.map +1 -0
- package/dist/agents/control_flow/finding-generator.js +354 -0
- package/dist/agents/control_flow/finding-generator.js.map +1 -0
- package/dist/agents/control_flow/index.d.ts +39 -0
- package/dist/agents/control_flow/index.d.ts.map +1 -0
- package/dist/agents/control_flow/index.js +270 -0
- package/dist/agents/control_flow/index.js.map +1 -0
- package/dist/agents/control_flow/logger.d.ts +333 -0
- package/dist/agents/control_flow/logger.d.ts.map +1 -0
- package/dist/agents/control_flow/logger.js +607 -0
- package/dist/agents/control_flow/logger.js.map +1 -0
- package/dist/agents/control_flow/mitigation-detector.d.ts +207 -0
- package/dist/agents/control_flow/mitigation-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/mitigation-detector.js +625 -0
- package/dist/agents/control_flow/mitigation-detector.js.map +1 -0
- package/dist/agents/control_flow/mitigation-patterns.d.ts +53 -0
- package/dist/agents/control_flow/mitigation-patterns.d.ts.map +1 -0
- package/dist/agents/control_flow/mitigation-patterns.js +620 -0
- package/dist/agents/control_flow/mitigation-patterns.js.map +1 -0
- package/dist/agents/control_flow/path-analyzer.d.ts +287 -0
- package/dist/agents/control_flow/path-analyzer.d.ts.map +1 -0
- package/dist/agents/control_flow/path-analyzer.js +695 -0
- package/dist/agents/control_flow/path-analyzer.js.map +1 -0
- package/dist/agents/control_flow/pattern-validator.d.ts +132 -0
- package/dist/agents/control_flow/pattern-validator.d.ts.map +1 -0
- package/dist/agents/control_flow/pattern-validator.js +420 -0
- package/dist/agents/control_flow/pattern-validator.js.map +1 -0
- package/dist/agents/control_flow/timeout-regex.d.ts +144 -0
- package/dist/agents/control_flow/timeout-regex.d.ts.map +1 -0
- package/dist/agents/control_flow/timeout-regex.js +339 -0
- package/dist/agents/control_flow/timeout-regex.js.map +1 -0
- package/dist/agents/control_flow/types.d.ts +782 -0
- package/dist/agents/control_flow/types.d.ts.map +1 -0
- package/dist/agents/control_flow/types.js +428 -0
- package/dist/agents/control_flow/types.js.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts +85 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.js +493 -0
- package/dist/agents/control_flow/vulnerability-detector.js.map +1 -0
- package/dist/agents/date-utils.d.ts +19 -0
- package/dist/agents/date-utils.d.ts.map +1 -0
- package/dist/agents/date-utils.js +29 -0
- package/dist/agents/date-utils.js.map +1 -0
- package/dist/agents/index.d.ts +25 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +50 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/json-utils.d.ts +34 -0
- package/dist/agents/json-utils.d.ts.map +1 -0
- package/dist/agents/json-utils.js +62 -0
- package/dist/agents/json-utils.js.map +1 -0
- package/dist/agents/local_llm.d.ts +24 -0
- package/dist/agents/local_llm.d.ts.map +1 -0
- package/dist/agents/local_llm.js +566 -0
- package/dist/agents/local_llm.js.map +1 -0
- package/dist/agents/metadata.d.ts +57 -0
- package/dist/agents/metadata.d.ts.map +1 -0
- package/dist/agents/metadata.js +45 -0
- package/dist/agents/metadata.js.map +1 -0
- package/dist/agents/opencode.d.ts +18 -0
- package/dist/agents/opencode.d.ts.map +1 -0
- package/dist/agents/opencode.js +364 -0
- package/dist/agents/opencode.js.map +1 -0
- package/dist/agents/path-filter.d.ts +25 -0
- package/dist/agents/path-filter.d.ts.map +1 -0
- package/dist/agents/path-filter.js +43 -0
- package/dist/agents/path-filter.js.map +1 -0
- package/dist/agents/pr_agent.d.ts +3 -0
- package/dist/agents/pr_agent.d.ts.map +1 -0
- package/dist/agents/pr_agent.js +312 -0
- package/dist/agents/pr_agent.js.map +1 -0
- package/dist/agents/retry.d.ts +12 -0
- package/dist/agents/retry.d.ts.map +1 -0
- package/dist/agents/retry.js +65 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/agents/reviewdog.d.ts +24 -0
- package/dist/agents/reviewdog.d.ts.map +1 -0
- package/dist/agents/reviewdog.js +259 -0
- package/dist/agents/reviewdog.js.map +1 -0
- package/dist/agents/security.d.ts +49 -0
- package/dist/agents/security.d.ts.map +1 -0
- package/dist/agents/security.js +302 -0
- package/dist/agents/security.js.map +1 -0
- package/dist/agents/semgrep.d.ts +8 -0
- package/dist/agents/semgrep.d.ts.map +1 -0
- package/dist/agents/semgrep.js +157 -0
- package/dist/agents/semgrep.js.map +1 -0
- package/dist/agents/types.d.ts +450 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +127 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/budget.d.ts +59 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +82 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache/key.d.ts +49 -0
- package/dist/cache/key.d.ts.map +1 -0
- package/dist/cache/key.js +71 -0
- package/dist/cache/key.js.map +1 -0
- package/dist/cache/store.d.ts +47 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +328 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cli/commands/check.d.ts +60 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +163 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/index.d.ts +12 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +12 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/local-review.d.ts +149 -0
- package/dist/cli/commands/local-review.d.ts.map +1 -0
- package/dist/cli/commands/local-review.js +755 -0
- package/dist/cli/commands/local-review.js.map +1 -0
- package/dist/cli/config-wizard.d.ts +87 -0
- package/dist/cli/config-wizard.d.ts.map +1 -0
- package/dist/cli/config-wizard.js +240 -0
- package/dist/cli/config-wizard.js.map +1 -0
- package/dist/cli/dependencies/catalog.d.ts +44 -0
- package/dist/cli/dependencies/catalog.d.ts.map +1 -0
- package/dist/cli/dependencies/catalog.js +89 -0
- package/dist/cli/dependencies/catalog.js.map +1 -0
- package/dist/cli/dependencies/checker.d.ts +42 -0
- package/dist/cli/dependencies/checker.d.ts.map +1 -0
- package/dist/cli/dependencies/checker.js +240 -0
- package/dist/cli/dependencies/checker.js.map +1 -0
- package/dist/cli/dependencies/index.d.ts +16 -0
- package/dist/cli/dependencies/index.d.ts.map +1 -0
- package/dist/cli/dependencies/index.js +16 -0
- package/dist/cli/dependencies/index.js.map +1 -0
- package/dist/cli/dependencies/messages.d.ts +58 -0
- package/dist/cli/dependencies/messages.d.ts.map +1 -0
- package/dist/cli/dependencies/messages.js +183 -0
- package/dist/cli/dependencies/messages.js.map +1 -0
- package/dist/cli/dependencies/platform.d.ts +25 -0
- package/dist/cli/dependencies/platform.d.ts.map +1 -0
- package/dist/cli/dependencies/platform.js +42 -0
- package/dist/cli/dependencies/platform.js.map +1 -0
- package/dist/cli/dependencies/schemas.d.ts +65 -0
- package/dist/cli/dependencies/schemas.d.ts.map +1 -0
- package/dist/cli/dependencies/schemas.js +42 -0
- package/dist/cli/dependencies/schemas.js.map +1 -0
- package/dist/cli/dependencies/types.d.ts +112 -0
- package/dist/cli/dependencies/types.d.ts.map +1 -0
- package/dist/cli/dependencies/types.js +6 -0
- package/dist/cli/dependencies/types.js.map +1 -0
- package/dist/cli/dependencies/version.d.ts +67 -0
- package/dist/cli/dependencies/version.d.ts.map +1 -0
- package/dist/cli/dependencies/version.js +125 -0
- package/dist/cli/dependencies/version.js.map +1 -0
- package/dist/cli/git-context.d.ts +105 -0
- package/dist/cli/git-context.d.ts.map +1 -0
- package/dist/cli/git-context.js +313 -0
- package/dist/cli/git-context.js.map +1 -0
- package/dist/cli/interactive-prompts.d.ts +126 -0
- package/dist/cli/interactive-prompts.d.ts.map +1 -0
- package/dist/cli/interactive-prompts.js +128 -0
- package/dist/cli/interactive-prompts.js.map +1 -0
- package/dist/cli/options/index.d.ts +7 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +11 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/options/local-review-options.d.ts +221 -0
- package/dist/cli/options/local-review-options.d.ts.map +1 -0
- package/dist/cli/options/local-review-options.js +332 -0
- package/dist/cli/options/local-review-options.js.map +1 -0
- package/dist/cli/output/colors.d.ts +154 -0
- package/dist/cli/output/colors.d.ts.map +1 -0
- package/dist/cli/output/colors.js +255 -0
- package/dist/cli/output/colors.js.map +1 -0
- package/dist/cli/output/errors.d.ts +157 -0
- package/dist/cli/output/errors.d.ts.map +1 -0
- package/dist/cli/output/errors.js +266 -0
- package/dist/cli/output/errors.js.map +1 -0
- package/dist/cli/output/index.d.ts +12 -0
- package/dist/cli/output/index.d.ts.map +1 -0
- package/dist/cli/output/index.js +15 -0
- package/dist/cli/output/index.js.map +1 -0
- package/dist/cli/output/progress.d.ts +237 -0
- package/dist/cli/output/progress.d.ts.map +1 -0
- package/dist/cli/output/progress.js +405 -0
- package/dist/cli/output/progress.js.map +1 -0
- package/dist/cli/signals.d.ts +145 -0
- package/dist/cli/signals.d.ts.map +1 -0
- package/dist/cli/signals.js +223 -0
- package/dist/cli/signals.js.map +1 -0
- package/dist/cli/validation-report.d.ts +106 -0
- package/dist/cli/validation-report.d.ts.map +1 -0
- package/dist/cli/validation-report.js +108 -0
- package/dist/cli/validation-report.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mitigation-config.d.ts +94 -0
- package/dist/config/mitigation-config.d.ts.map +1 -0
- package/dist/config/mitigation-config.js +430 -0
- package/dist/config/mitigation-config.js.map +1 -0
- package/dist/config/providers.d.ts +118 -0
- package/dist/config/providers.d.ts.map +1 -0
- package/dist/config/providers.js +229 -0
- package/dist/config/providers.js.map +1 -0
- package/dist/config/schemas.d.ts +278 -0
- package/dist/config/schemas.d.ts.map +1 -0
- package/dist/config/schemas.js +111 -0
- package/dist/config/schemas.js.map +1 -0
- package/dist/config/zero-config.d.ts +126 -0
- package/dist/config/zero-config.d.ts.map +1 -0
- package/dist/config/zero-config.js +243 -0
- package/dist/config/zero-config.js.map +1 -0
- package/dist/config.d.ts +110 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +302 -0
- package/dist/config.js.map +1 -0
- package/dist/diff.d.ts +224 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +832 -0
- package/dist/diff.js.map +1 -0
- package/dist/git-validators.d.ts +106 -0
- package/dist/git-validators.d.ts.map +1 -0
- package/dist/git-validators.js +224 -0
- package/dist/git-validators.js.map +1 -0
- package/dist/main.d.ts +61 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +704 -0
- package/dist/main.js.map +1 -0
- package/dist/phases/execute.d.ts +60 -0
- package/dist/phases/execute.d.ts.map +1 -0
- package/dist/phases/execute.js +168 -0
- package/dist/phases/execute.js.map +1 -0
- package/dist/phases/index.d.ts +9 -0
- package/dist/phases/index.d.ts.map +1 -0
- package/dist/phases/index.js +9 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/phases/preflight.d.ts +40 -0
- package/dist/phases/preflight.d.ts.map +1 -0
- package/dist/phases/preflight.js +122 -0
- package/dist/phases/preflight.js.map +1 -0
- package/dist/phases/report.d.ts +51 -0
- package/dist/phases/report.d.ts.map +1 -0
- package/dist/phases/report.js +152 -0
- package/dist/phases/report.js.map +1 -0
- package/dist/policy.d.ts +33 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +34 -0
- package/dist/policy.js.map +1 -0
- package/dist/preflight.d.ts +181 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +627 -0
- package/dist/preflight.js.map +1 -0
- package/dist/report/ado.d.ts +53 -0
- package/dist/report/ado.d.ts.map +1 -0
- package/dist/report/ado.js +411 -0
- package/dist/report/ado.js.map +1 -0
- package/dist/report/agent-icons.d.ts +36 -0
- package/dist/report/agent-icons.d.ts.map +1 -0
- package/dist/report/agent-icons.js +46 -0
- package/dist/report/agent-icons.js.map +1 -0
- package/dist/report/base.d.ts +30 -0
- package/dist/report/base.d.ts.map +1 -0
- package/dist/report/base.js +64 -0
- package/dist/report/base.js.map +1 -0
- package/dist/report/formats.d.ts +206 -0
- package/dist/report/formats.d.ts.map +1 -0
- package/dist/report/formats.js +481 -0
- package/dist/report/formats.js.map +1 -0
- package/dist/report/github.d.ts +44 -0
- package/dist/report/github.d.ts.map +1 -0
- package/dist/report/github.js +409 -0
- package/dist/report/github.js.map +1 -0
- package/dist/report/line-resolver.d.ts +208 -0
- package/dist/report/line-resolver.d.ts.map +1 -0
- package/dist/report/line-resolver.js +578 -0
- package/dist/report/line-resolver.js.map +1 -0
- package/dist/report/resolution.d.ts +158 -0
- package/dist/report/resolution.d.ts.map +1 -0
- package/dist/report/resolution.js +272 -0
- package/dist/report/resolution.js.map +1 -0
- package/dist/report/sanitize.d.ts +32 -0
- package/dist/report/sanitize.d.ts.map +1 -0
- package/dist/report/sanitize.js +84 -0
- package/dist/report/sanitize.js.map +1 -0
- package/dist/report/terminal.d.ts +440 -0
- package/dist/report/terminal.d.ts.map +1 -0
- package/dist/report/terminal.js +840 -0
- package/dist/report/terminal.js.map +1 -0
- package/dist/reviewignore.d.ts +125 -0
- package/dist/reviewignore.d.ts.map +1 -0
- package/dist/reviewignore.js +335 -0
- package/dist/reviewignore.js.map +1 -0
- package/dist/security-logger.d.ts +178 -0
- package/dist/security-logger.d.ts.map +1 -0
- package/dist/security-logger.js +256 -0
- package/dist/security-logger.js.map +1 -0
- package/dist/telemetry/backends/console.d.ts +24 -0
- package/dist/telemetry/backends/console.d.ts.map +1 -0
- package/dist/telemetry/backends/console.js +54 -0
- package/dist/telemetry/backends/console.js.map +1 -0
- package/dist/telemetry/backends/jsonl.d.ts +31 -0
- package/dist/telemetry/backends/jsonl.d.ts.map +1 -0
- package/dist/telemetry/backends/jsonl.js +121 -0
- package/dist/telemetry/backends/jsonl.js.map +1 -0
- package/dist/telemetry/emitter.d.ts +43 -0
- package/dist/telemetry/emitter.d.ts.map +1 -0
- package/dist/telemetry/emitter.js +83 -0
- package/dist/telemetry/emitter.js.map +1 -0
- package/dist/telemetry/hook.d.ts +53 -0
- package/dist/telemetry/hook.d.ts.map +1 -0
- package/dist/telemetry/hook.js +118 -0
- package/dist/telemetry/hook.js.map +1 -0
- package/dist/telemetry/index.d.ts +58 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +143 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/types.d.ts +139 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +133 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/trust.d.ts +65 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +78 -0
- package/dist/trust.js.map +1 -0
- package/dist/types/assert-never.d.ts +30 -0
- package/dist/types/assert-never.d.ts.map +1 -0
- package/dist/types/assert-never.js +32 -0
- package/dist/types/assert-never.js.map +1 -0
- package/dist/types/branded.d.ts +172 -0
- package/dist/types/branded.d.ts.map +1 -0
- package/dist/types/branded.js +262 -0
- package/dist/types/branded.js.map +1 -0
- package/dist/types/errors.d.ts +320 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +551 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +37 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +77 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/result.d.ts +323 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +423 -0
- package/dist/types/result.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for runtime validation of dependency check results.
|
|
3
|
+
* @module cli/dependencies/schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Schema for supported platforms.
|
|
8
|
+
*/
|
|
9
|
+
export declare const PlatformSchema: z.ZodEnum<{
|
|
10
|
+
darwin: "darwin";
|
|
11
|
+
linux: "linux";
|
|
12
|
+
win32: "win32";
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Schema for dependency check status.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DependencyStatusSchema: z.ZodEnum<{
|
|
18
|
+
available: "available";
|
|
19
|
+
missing: "missing";
|
|
20
|
+
unhealthy: "unhealthy";
|
|
21
|
+
"version-mismatch": "version-mismatch";
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Schema for a single dependency check result.
|
|
25
|
+
*/
|
|
26
|
+
export declare const DependencyCheckResultSchema: z.ZodObject<{
|
|
27
|
+
name: z.ZodString;
|
|
28
|
+
status: z.ZodEnum<{
|
|
29
|
+
available: "available";
|
|
30
|
+
missing: "missing";
|
|
31
|
+
unhealthy: "unhealthy";
|
|
32
|
+
"version-mismatch": "version-mismatch";
|
|
33
|
+
}>;
|
|
34
|
+
version: z.ZodNullable<z.ZodString>;
|
|
35
|
+
error: z.ZodNullable<z.ZodString>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
/**
|
|
38
|
+
* Schema for aggregated dependency check summary.
|
|
39
|
+
*/
|
|
40
|
+
export declare const DependencyCheckSummarySchema: z.ZodObject<{
|
|
41
|
+
results: z.ZodArray<z.ZodObject<{
|
|
42
|
+
name: z.ZodString;
|
|
43
|
+
status: z.ZodEnum<{
|
|
44
|
+
available: "available";
|
|
45
|
+
missing: "missing";
|
|
46
|
+
unhealthy: "unhealthy";
|
|
47
|
+
"version-mismatch": "version-mismatch";
|
|
48
|
+
}>;
|
|
49
|
+
version: z.ZodNullable<z.ZodString>;
|
|
50
|
+
error: z.ZodNullable<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>>;
|
|
52
|
+
missingRequired: z.ZodArray<z.ZodString>;
|
|
53
|
+
missingOptional: z.ZodArray<z.ZodString>;
|
|
54
|
+
unhealthy: z.ZodArray<z.ZodString>;
|
|
55
|
+
versionWarnings: z.ZodArray<z.ZodString>;
|
|
56
|
+
hasBlockingIssues: z.ZodBoolean;
|
|
57
|
+
hasWarnings: z.ZodBoolean;
|
|
58
|
+
runnablePasses: z.ZodArray<z.ZodString>;
|
|
59
|
+
skippedPasses: z.ZodArray<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
export type PlatformFromSchema = z.infer<typeof PlatformSchema>;
|
|
62
|
+
export type DependencyStatusFromSchema = z.infer<typeof DependencyStatusSchema>;
|
|
63
|
+
export type DependencyCheckResultFromSchema = z.infer<typeof DependencyCheckResultSchema>;
|
|
64
|
+
export type DependencyCheckSummaryFromSchema = z.infer<typeof DependencyCheckSummarySchema>;
|
|
65
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/cli/dependencies/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,cAAc;;;;EAAuC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;EAKjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAKtC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;iBAUvC,CAAC;AAGH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAChE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAChF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC1F,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for runtime validation of dependency check results.
|
|
3
|
+
* @module cli/dependencies/schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Schema for supported platforms.
|
|
8
|
+
*/
|
|
9
|
+
export const PlatformSchema = z.enum(['darwin', 'win32', 'linux']);
|
|
10
|
+
/**
|
|
11
|
+
* Schema for dependency check status.
|
|
12
|
+
*/
|
|
13
|
+
export const DependencyStatusSchema = z.enum([
|
|
14
|
+
'available',
|
|
15
|
+
'missing',
|
|
16
|
+
'unhealthy',
|
|
17
|
+
'version-mismatch',
|
|
18
|
+
]);
|
|
19
|
+
/**
|
|
20
|
+
* Schema for a single dependency check result.
|
|
21
|
+
*/
|
|
22
|
+
export const DependencyCheckResultSchema = z.object({
|
|
23
|
+
name: z.string(),
|
|
24
|
+
status: DependencyStatusSchema,
|
|
25
|
+
version: z.string().nullable(),
|
|
26
|
+
error: z.string().nullable(),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Schema for aggregated dependency check summary.
|
|
30
|
+
*/
|
|
31
|
+
export const DependencyCheckSummarySchema = z.object({
|
|
32
|
+
results: z.array(DependencyCheckResultSchema),
|
|
33
|
+
missingRequired: z.array(z.string()),
|
|
34
|
+
missingOptional: z.array(z.string()),
|
|
35
|
+
unhealthy: z.array(z.string()),
|
|
36
|
+
versionWarnings: z.array(z.string()),
|
|
37
|
+
hasBlockingIssues: z.boolean(),
|
|
38
|
+
hasWarnings: z.boolean(),
|
|
39
|
+
runnablePasses: z.array(z.string()),
|
|
40
|
+
skippedPasses: z.array(z.string()),
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/cli/dependencies/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,WAAW;IACX,SAAS;IACT,WAAW;IACX,kBAAkB;CACnB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,sBAAsB;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC;IAC7C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACnC,CAAC,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript types and interfaces for CLI dependency detection.
|
|
3
|
+
* @module cli/dependencies/types
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Supported platforms for dependency detection.
|
|
7
|
+
*/
|
|
8
|
+
export type Platform = 'darwin' | 'win32' | 'linux';
|
|
9
|
+
/**
|
|
10
|
+
* Status of a dependency check.
|
|
11
|
+
* - available: Tool works, version verified
|
|
12
|
+
* - missing: ENOENT - binary not found in PATH
|
|
13
|
+
* - unhealthy: Binary exists but --version failed or returned unparseable output
|
|
14
|
+
* - version-mismatch: Below minimum required version
|
|
15
|
+
*/
|
|
16
|
+
export type DependencyStatus = 'available' | 'missing' | 'unhealthy' | 'version-mismatch';
|
|
17
|
+
/**
|
|
18
|
+
* Per-platform installation command mapping.
|
|
19
|
+
*/
|
|
20
|
+
export interface PlatformInstructions {
|
|
21
|
+
darwin: string;
|
|
22
|
+
win32: string;
|
|
23
|
+
linux: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Centralized catalog entry for a required external tool.
|
|
27
|
+
*/
|
|
28
|
+
export interface ExternalDependency {
|
|
29
|
+
/** Tool identifier (e.g., 'semgrep') */
|
|
30
|
+
name: string;
|
|
31
|
+
/** Human-readable name for error messages */
|
|
32
|
+
displayName: string;
|
|
33
|
+
/** Binary and args for version check (e.g., ['semgrep', ['--version']]) */
|
|
34
|
+
versionCommand: [string, string[]];
|
|
35
|
+
/** Pattern to extract version from output */
|
|
36
|
+
versionRegex: RegExp;
|
|
37
|
+
/** Minimum required version (semver), null if no minimum */
|
|
38
|
+
minVersion: string | null;
|
|
39
|
+
/** Official documentation URL */
|
|
40
|
+
docsUrl: string;
|
|
41
|
+
/** Per-platform install commands */
|
|
42
|
+
installInstructions: PlatformInstructions;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Result of checking a single dependency.
|
|
46
|
+
*/
|
|
47
|
+
export interface DependencyCheckResult {
|
|
48
|
+
/** Dependency name */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Check result status */
|
|
51
|
+
status: DependencyStatus;
|
|
52
|
+
/** Detected version (null if missing/unparseable) */
|
|
53
|
+
version: string | null;
|
|
54
|
+
/** Error message (for unhealthy/missing states) */
|
|
55
|
+
error: string | null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Aggregated result of checking all dependencies for a run.
|
|
59
|
+
*/
|
|
60
|
+
export interface DependencyCheckSummary {
|
|
61
|
+
/** Individual check results */
|
|
62
|
+
results: DependencyCheckResult[];
|
|
63
|
+
/** Dependencies missing for required passes */
|
|
64
|
+
missingRequired: string[];
|
|
65
|
+
/** Dependencies missing for optional passes */
|
|
66
|
+
missingOptional: string[];
|
|
67
|
+
/** Dependencies in unhealthy state */
|
|
68
|
+
unhealthy: string[];
|
|
69
|
+
/** Dependencies below recommended version */
|
|
70
|
+
versionWarnings: string[];
|
|
71
|
+
/** True if any required dependency unavailable */
|
|
72
|
+
hasBlockingIssues: boolean;
|
|
73
|
+
/** True if any non-blocking issues exist */
|
|
74
|
+
hasWarnings: boolean;
|
|
75
|
+
/** Names of passes that can run (all deps available) */
|
|
76
|
+
runnablePasses: string[];
|
|
77
|
+
/** Names of passes skipped due to missing/unhealthy deps */
|
|
78
|
+
skippedPasses: string[];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Information about a skipped pass and why it was skipped.
|
|
82
|
+
*/
|
|
83
|
+
export interface SkippedPassInfo {
|
|
84
|
+
/** Pass name */
|
|
85
|
+
name: string;
|
|
86
|
+
/** The missing dependency that caused the skip */
|
|
87
|
+
missingDep: string;
|
|
88
|
+
/** Reason for skip: missing or unhealthy */
|
|
89
|
+
reason: 'missing' | 'unhealthy';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Information about a pass and its required dependencies.
|
|
93
|
+
*/
|
|
94
|
+
export interface PassDependencyInfo {
|
|
95
|
+
/** Pass name from config */
|
|
96
|
+
passName: string;
|
|
97
|
+
/** Whether pass is marked as required */
|
|
98
|
+
required: boolean;
|
|
99
|
+
/** Agent IDs used by this pass */
|
|
100
|
+
agents: string[];
|
|
101
|
+
/** External tools needed (derived from agents) */
|
|
102
|
+
dependencies: string[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Registry of all known external dependencies.
|
|
106
|
+
*/
|
|
107
|
+
export type DependencyCatalog = Record<string, ExternalDependency>;
|
|
108
|
+
/**
|
|
109
|
+
* Mapping from agent IDs to their required external tools.
|
|
110
|
+
*/
|
|
111
|
+
export type AgentDependencyMap = Record<string, string[]>;
|
|
112
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/dependencies/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,mBAAmB,EAAE,oBAAoB,CAAC;CAC3C;AAID;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,qDAAqD;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,+CAA+C;IAC/C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,+CAA+C;IAC/C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;CACjC;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kDAAkD;IAClD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/dependencies/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version parsing and comparison utilities for dependency checking.
|
|
3
|
+
* @module cli/dependencies/version
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parsed semantic version components.
|
|
7
|
+
*/
|
|
8
|
+
export interface ParsedVersion {
|
|
9
|
+
major: number;
|
|
10
|
+
minor: number;
|
|
11
|
+
patch: number;
|
|
12
|
+
raw: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parses a version string from command output.
|
|
16
|
+
*
|
|
17
|
+
* @param output - Raw output from --version command
|
|
18
|
+
* @param regex - Optional custom regex to extract version (must have capture groups for major.minor.patch or single group for full version)
|
|
19
|
+
* @returns Parsed version or null if parsing failed
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* parseVersion('semgrep 1.56.0'); // { major: 1, minor: 56, patch: 0, raw: '1.56.0' }
|
|
24
|
+
* parseVersion('reviewdog version: 0.17.4'); // { major: 0, minor: 17, patch: 4, raw: '0.17.4' }
|
|
25
|
+
* parseVersion('invalid output'); // null
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseVersion(output: string, regex?: RegExp): ParsedVersion | null;
|
|
29
|
+
/**
|
|
30
|
+
* Compares two parsed versions.
|
|
31
|
+
*
|
|
32
|
+
* @param a - First version
|
|
33
|
+
* @param b - Second version
|
|
34
|
+
* @returns -1 if a < b, 0 if a == b, 1 if a > b
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* compareVersions(v1_0_0, v1_0_1); // -1
|
|
39
|
+
* compareVersions(v1_0_0, v1_0_0); // 0
|
|
40
|
+
* compareVersions(v2_0_0, v1_9_9); // 1
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function compareVersions(a: ParsedVersion, b: ParsedVersion): -1 | 0 | 1;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if an installed version meets the minimum required version.
|
|
46
|
+
*
|
|
47
|
+
* @param installed - The installed version
|
|
48
|
+
* @param minimum - The minimum required version string (e.g., "1.0.0")
|
|
49
|
+
* @returns true if installed >= minimum, false otherwise
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* meetsMinimum({ major: 1, minor: 5, patch: 0, raw: '1.5.0' }, '1.0.0'); // true
|
|
54
|
+
* meetsMinimum({ major: 0, minor: 9, patch: 0, raw: '0.9.0' }, '1.0.0'); // false
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function meetsMinimum(installed: ParsedVersion, minimum: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Extracts version string from command output using a regex.
|
|
60
|
+
* Convenience function that returns just the raw version string.
|
|
61
|
+
*
|
|
62
|
+
* @param output - Raw output from --version command
|
|
63
|
+
* @param regex - Optional custom regex
|
|
64
|
+
* @returns Version string or null if parsing failed
|
|
65
|
+
*/
|
|
66
|
+
export declare function extractVersionString(output: string, regex?: RegExp): string | null;
|
|
67
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/cli/dependencies/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAQD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkDjF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAW9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAS/E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version parsing and comparison utilities for dependency checking.
|
|
3
|
+
* @module cli/dependencies/version
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default regex pattern to extract semver from version output.
|
|
7
|
+
* Matches patterns like "1.2.3", "v1.2.3", embedded in any text.
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_VERSION_REGEX = /(\d+)\.(\d+)\.(\d+)/;
|
|
10
|
+
/**
|
|
11
|
+
* Parses a version string from command output.
|
|
12
|
+
*
|
|
13
|
+
* @param output - Raw output from --version command
|
|
14
|
+
* @param regex - Optional custom regex to extract version (must have capture groups for major.minor.patch or single group for full version)
|
|
15
|
+
* @returns Parsed version or null if parsing failed
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* parseVersion('semgrep 1.56.0'); // { major: 1, minor: 56, patch: 0, raw: '1.56.0' }
|
|
20
|
+
* parseVersion('reviewdog version: 0.17.4'); // { major: 0, minor: 17, patch: 4, raw: '0.17.4' }
|
|
21
|
+
* parseVersion('invalid output'); // null
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export function parseVersion(output, regex) {
|
|
25
|
+
const pattern = regex ?? DEFAULT_VERSION_REGEX;
|
|
26
|
+
const match = output.match(pattern);
|
|
27
|
+
if (!match) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// If regex has 3+ capture groups, use them as major/minor/patch
|
|
31
|
+
if (match.length >= 4 && match[1] && match[2] && match[3]) {
|
|
32
|
+
const major = parseInt(match[1], 10);
|
|
33
|
+
const minor = parseInt(match[2], 10);
|
|
34
|
+
const patch = parseInt(match[3], 10);
|
|
35
|
+
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
major,
|
|
40
|
+
minor,
|
|
41
|
+
patch,
|
|
42
|
+
raw: `${major}.${minor}.${patch}`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// If regex has single capture group, try to parse it as semver
|
|
46
|
+
if (match.length >= 2 && match[1]) {
|
|
47
|
+
const versionStr = match[1];
|
|
48
|
+
const parts = versionStr.split('.');
|
|
49
|
+
if (parts.length >= 3 && parts[0] && parts[1] && parts[2]) {
|
|
50
|
+
const major = parseInt(parts[0], 10);
|
|
51
|
+
const minor = parseInt(parts[1], 10);
|
|
52
|
+
const patch = parseInt(parts[2], 10);
|
|
53
|
+
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
major,
|
|
58
|
+
minor,
|
|
59
|
+
patch,
|
|
60
|
+
raw: `${major}.${minor}.${patch}`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Compares two parsed versions.
|
|
68
|
+
*
|
|
69
|
+
* @param a - First version
|
|
70
|
+
* @param b - Second version
|
|
71
|
+
* @returns -1 if a < b, 0 if a == b, 1 if a > b
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* compareVersions(v1_0_0, v1_0_1); // -1
|
|
76
|
+
* compareVersions(v1_0_0, v1_0_0); // 0
|
|
77
|
+
* compareVersions(v2_0_0, v1_9_9); // 1
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export function compareVersions(a, b) {
|
|
81
|
+
if (a.major !== b.major) {
|
|
82
|
+
return a.major > b.major ? 1 : -1;
|
|
83
|
+
}
|
|
84
|
+
if (a.minor !== b.minor) {
|
|
85
|
+
return a.minor > b.minor ? 1 : -1;
|
|
86
|
+
}
|
|
87
|
+
if (a.patch !== b.patch) {
|
|
88
|
+
return a.patch > b.patch ? 1 : -1;
|
|
89
|
+
}
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Checks if an installed version meets the minimum required version.
|
|
94
|
+
*
|
|
95
|
+
* @param installed - The installed version
|
|
96
|
+
* @param minimum - The minimum required version string (e.g., "1.0.0")
|
|
97
|
+
* @returns true if installed >= minimum, false otherwise
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* meetsMinimum({ major: 1, minor: 5, patch: 0, raw: '1.5.0' }, '1.0.0'); // true
|
|
102
|
+
* meetsMinimum({ major: 0, minor: 9, patch: 0, raw: '0.9.0' }, '1.0.0'); // false
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export function meetsMinimum(installed, minimum) {
|
|
106
|
+
const minVersion = parseVersion(minimum);
|
|
107
|
+
if (!minVersion) {
|
|
108
|
+
// If we can't parse the minimum, assume it's met (fail open)
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
return compareVersions(installed, minVersion) >= 0;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Extracts version string from command output using a regex.
|
|
115
|
+
* Convenience function that returns just the raw version string.
|
|
116
|
+
*
|
|
117
|
+
* @param output - Raw output from --version command
|
|
118
|
+
* @param regex - Optional custom regex
|
|
119
|
+
* @returns Version string or null if parsing failed
|
|
120
|
+
*/
|
|
121
|
+
export function extractVersionString(output, regex) {
|
|
122
|
+
const parsed = parseVersion(output, regex);
|
|
123
|
+
return parsed?.raw ?? null;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/cli/dependencies/version.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Context Module
|
|
3
|
+
*
|
|
4
|
+
* Provides git repository detection and context inference for local review mode.
|
|
5
|
+
* Uses the path argument as working directory for all operations, enabling
|
|
6
|
+
* `ai-review /some/other/repo` from any directory.
|
|
7
|
+
*
|
|
8
|
+
* Security: All inputs validated via existing assertSafePath/assertSafeGitRef.
|
|
9
|
+
* All git commands use execFileSync with shell: false.
|
|
10
|
+
*/
|
|
11
|
+
import { type Result } from '../types/result.js';
|
|
12
|
+
/**
|
|
13
|
+
* Normalize a path to use forward slashes.
|
|
14
|
+
*
|
|
15
|
+
* This is critical for Windows compatibility. The path validators reject
|
|
16
|
+
* backslashes as potential shell metacharacters, but Windows paths naturally
|
|
17
|
+
* use backslashes. Forward slashes work on all platforms including Windows.
|
|
18
|
+
*
|
|
19
|
+
* @param p - Path to normalize
|
|
20
|
+
* @returns Path with all backslashes converted to forward slashes
|
|
21
|
+
*/
|
|
22
|
+
export declare function normalizePath(p: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Git context for local review operations
|
|
25
|
+
*/
|
|
26
|
+
export interface GitContext {
|
|
27
|
+
/** Absolute path to repository root (contains .git) */
|
|
28
|
+
repoRoot: string;
|
|
29
|
+
/** Current branch name (or 'HEAD' if detached) */
|
|
30
|
+
currentBranch: string;
|
|
31
|
+
/** Detected default branch (main/master/develop) */
|
|
32
|
+
defaultBase: string;
|
|
33
|
+
/** Whether working tree has uncommitted changes */
|
|
34
|
+
hasUncommitted: boolean;
|
|
35
|
+
/** Whether index has staged changes */
|
|
36
|
+
hasStaged: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Error codes for git context operations
|
|
40
|
+
* Values match the contract in contracts/git-context.md
|
|
41
|
+
*/
|
|
42
|
+
export declare const GitContextErrorCode: {
|
|
43
|
+
readonly NOT_GIT_REPO: "NOT_GIT_REPO";
|
|
44
|
+
readonly GIT_NOT_FOUND: "GIT_NOT_FOUND";
|
|
45
|
+
readonly INVALID_PATH: "INVALID_PATH";
|
|
46
|
+
};
|
|
47
|
+
export type GitContextErrorCode = (typeof GitContextErrorCode)[keyof typeof GitContextErrorCode];
|
|
48
|
+
/**
|
|
49
|
+
* Error type for git context operations
|
|
50
|
+
*/
|
|
51
|
+
export interface GitContextError {
|
|
52
|
+
code: GitContextErrorCode;
|
|
53
|
+
message: string;
|
|
54
|
+
path?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Find the root directory of a git repository by walking up the directory tree.
|
|
58
|
+
*
|
|
59
|
+
* @param cwd - Starting directory (must be absolute path)
|
|
60
|
+
* @returns Result with absolute path to repo root or error
|
|
61
|
+
*/
|
|
62
|
+
export declare function findGitRoot(cwd: string): Result<string, GitContextError>;
|
|
63
|
+
/**
|
|
64
|
+
* Get the current branch name.
|
|
65
|
+
*
|
|
66
|
+
* @param repoPath - Path to repository root
|
|
67
|
+
* @returns Branch name or 'HEAD' if detached
|
|
68
|
+
*/
|
|
69
|
+
export declare function getCurrentBranch(repoPath: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Detect the default/base branch for the repository.
|
|
72
|
+
*
|
|
73
|
+
* Priority order:
|
|
74
|
+
* 1. origin/HEAD target (e.g., "origin/main")
|
|
75
|
+
* 2. Local or remote 'main' branch
|
|
76
|
+
* 3. Local or remote 'master' branch
|
|
77
|
+
* 4. Local or remote 'develop' branch
|
|
78
|
+
* 5. First available branch
|
|
79
|
+
*
|
|
80
|
+
* @param repoPath - Path to repository root
|
|
81
|
+
* @returns Branch name (always returns something)
|
|
82
|
+
*/
|
|
83
|
+
export declare function detectDefaultBranch(repoPath: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* Check if the working tree has uncommitted changes.
|
|
86
|
+
*
|
|
87
|
+
* @param repoPath - Path to repository root
|
|
88
|
+
* @returns true if there are uncommitted changes (staged or unstaged)
|
|
89
|
+
*/
|
|
90
|
+
export declare function hasUncommittedChanges(repoPath: string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Check if the index has staged changes.
|
|
93
|
+
*
|
|
94
|
+
* @param repoPath - Path to repository root
|
|
95
|
+
* @returns true if there are staged changes
|
|
96
|
+
*/
|
|
97
|
+
export declare function hasStagedChanges(repoPath: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Infer complete git context for local review.
|
|
100
|
+
*
|
|
101
|
+
* @param cwd - Starting directory (path argument from CLI)
|
|
102
|
+
* @returns Result with GitContext or error
|
|
103
|
+
*/
|
|
104
|
+
export declare function inferGitContext(cwd: string): Result<GitContext, GitContextError>;
|
|
105
|
+
//# sourceMappingURL=git-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/cli/git-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,oBAAoB,CAAC;AAM1D;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,cAAc,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAwCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA0DxE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAczD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwE5D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAc/D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAc1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAmChF"}
|