@supermodeltools/sdk 0.9.3 → 0.9.5
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/dist/apis/DefaultApi.d.ts +46 -2
- package/dist/apis/DefaultApi.js +183 -1
- package/dist/esm/apis/DefaultApi.d.ts +46 -2
- package/dist/esm/apis/DefaultApi.js +184 -2
- package/dist/esm/models/AffectedEntryPoint.d.ts +53 -0
- package/dist/esm/models/AffectedEntryPoint.js +57 -0
- package/dist/esm/models/AffectedFile.d.ts +43 -0
- package/dist/esm/models/AffectedFile.js +48 -0
- package/dist/esm/models/AffectedFunction.d.ts +78 -0
- package/dist/esm/models/AffectedFunction.js +73 -0
- package/dist/esm/models/AliveCodeItem.d.ts +1 -1
- package/dist/esm/models/AliveCodeItem.js +1 -1
- package/dist/esm/models/BlastRadius.d.ts +71 -0
- package/dist/esm/models/BlastRadius.js +65 -0
- package/dist/esm/models/CircularDependencyCycle.d.ts +65 -0
- package/dist/esm/models/CircularDependencyCycle.js +63 -0
- package/dist/esm/models/CircularDependencyMetadata.d.ts +61 -0
- package/dist/esm/models/CircularDependencyMetadata.js +56 -0
- package/dist/esm/models/CircularDependencyResponse.d.ts +46 -0
- package/dist/esm/models/CircularDependencyResponse.js +51 -0
- package/dist/esm/models/CircularDependencyResponseAsync.d.ts +66 -0
- package/dist/esm/models/CircularDependencyResponseAsync.js +60 -0
- package/dist/esm/models/CircularDependencySummary.d.ts +55 -0
- package/dist/esm/models/CircularDependencySummary.js +56 -0
- package/dist/esm/models/ClassificationStats.d.ts +1 -1
- package/dist/esm/models/ClassificationStats.js +1 -1
- package/dist/esm/models/CodeGraphEnvelope.d.ts +1 -1
- package/dist/esm/models/CodeGraphEnvelope.js +1 -1
- package/dist/esm/models/CodeGraphEnvelopeAsync.d.ts +1 -1
- package/dist/esm/models/CodeGraphEnvelopeAsync.js +1 -1
- package/dist/esm/models/CodeGraphEnvelopeGraph.d.ts +1 -1
- package/dist/esm/models/CodeGraphEnvelopeGraph.js +1 -1
- package/dist/esm/models/CodeGraphEnvelopeMetadata.d.ts +1 -1
- package/dist/esm/models/CodeGraphEnvelopeMetadata.js +1 -1
- package/dist/esm/models/CodeGraphNode.d.ts +1 -1
- package/dist/esm/models/CodeGraphNode.js +1 -1
- package/dist/esm/models/CodeGraphRelationship.d.ts +1 -1
- package/dist/esm/models/CodeGraphRelationship.js +1 -1
- package/dist/esm/models/CodeGraphStats.d.ts +1 -1
- package/dist/esm/models/CodeGraphStats.js +1 -1
- package/dist/esm/models/CoverageByDomain.d.ts +49 -0
- package/dist/esm/models/CoverageByDomain.js +52 -0
- package/dist/esm/models/CoverageByFile.d.ts +55 -0
- package/dist/esm/models/CoverageByFile.js +56 -0
- package/dist/esm/models/CriticalFile.d.ts +53 -0
- package/dist/esm/models/CriticalFile.js +57 -0
- package/dist/esm/models/CrossDomainDependency.d.ts +43 -0
- package/dist/esm/models/CrossDomainDependency.js +48 -0
- package/dist/esm/models/CycleEdge.d.ts +43 -0
- package/dist/esm/models/CycleEdge.js +48 -0
- package/dist/esm/models/DeadCodeAnalysisMetadata.d.ts +1 -1
- package/dist/esm/models/DeadCodeAnalysisMetadata.js +1 -1
- package/dist/esm/models/DeadCodeAnalysisResponse.d.ts +1 -1
- package/dist/esm/models/DeadCodeAnalysisResponse.js +1 -1
- package/dist/esm/models/DeadCodeAnalysisResponseAsync.d.ts +1 -1
- package/dist/esm/models/DeadCodeAnalysisResponseAsync.js +1 -1
- package/dist/esm/models/DeadCodeCandidate.d.ts +1 -1
- package/dist/esm/models/DeadCodeCandidate.js +1 -1
- package/dist/esm/models/DomainClassAssignment.d.ts +1 -1
- package/dist/esm/models/DomainClassAssignment.js +1 -1
- package/dist/esm/models/DomainClassificationResponse.d.ts +1 -1
- package/dist/esm/models/DomainClassificationResponse.js +1 -1
- package/dist/esm/models/DomainClassificationResponseAsync.d.ts +1 -1
- package/dist/esm/models/DomainClassificationResponseAsync.js +1 -1
- package/dist/esm/models/DomainClassificationResponseGraph.d.ts +1 -1
- package/dist/esm/models/DomainClassificationResponseGraph.js +1 -1
- package/dist/esm/models/DomainFileAssignment.d.ts +1 -1
- package/dist/esm/models/DomainFileAssignment.js +1 -1
- package/dist/esm/models/DomainFunctionAssignment.d.ts +1 -1
- package/dist/esm/models/DomainFunctionAssignment.js +1 -1
- package/dist/esm/models/DomainRelationship.d.ts +1 -1
- package/dist/esm/models/DomainRelationship.js +1 -1
- package/dist/esm/models/DomainSummary.d.ts +1 -1
- package/dist/esm/models/DomainSummary.js +1 -1
- package/dist/esm/models/EntryPoint.d.ts +1 -1
- package/dist/esm/models/EntryPoint.js +1 -1
- package/dist/esm/models/ErrorDetailsInner.d.ts +1 -1
- package/dist/esm/models/ErrorDetailsInner.js +1 -1
- package/dist/esm/models/FunctionDescription.d.ts +1 -1
- package/dist/esm/models/FunctionDescription.js +1 -1
- package/dist/esm/models/ImpactAnalysisMetadata.d.ts +61 -0
- package/dist/esm/models/ImpactAnalysisMetadata.js +56 -0
- package/dist/esm/models/ImpactAnalysisResponse.d.ts +46 -0
- package/dist/esm/models/ImpactAnalysisResponse.js +51 -0
- package/dist/esm/models/ImpactAnalysisResponseAsync.d.ts +66 -0
- package/dist/esm/models/ImpactAnalysisResponseAsync.js +60 -0
- package/dist/esm/models/ImpactGlobalMetrics.d.ts +39 -0
- package/dist/esm/models/ImpactGlobalMetrics.js +42 -0
- package/dist/esm/models/ImpactResult.d.ts +60 -0
- package/dist/esm/models/ImpactResult.js +61 -0
- package/dist/esm/models/ImpactTarget.d.ts +59 -0
- package/dist/esm/models/ImpactTarget.js +57 -0
- package/dist/esm/models/JobStatus.d.ts +1 -1
- package/dist/esm/models/JobStatus.js +1 -1
- package/dist/esm/models/ModelError.d.ts +1 -1
- package/dist/esm/models/ModelError.js +1 -1
- package/dist/esm/models/NearestTestedCaller.d.ts +43 -0
- package/dist/esm/models/NearestTestedCaller.js +48 -0
- package/dist/esm/models/SubdomainSummary.d.ts +1 -1
- package/dist/esm/models/SubdomainSummary.js +1 -1
- package/dist/esm/models/SupermodelArtifact.d.ts +1 -1
- package/dist/esm/models/SupermodelArtifact.js +1 -1
- package/dist/esm/models/SupermodelIR.d.ts +1 -1
- package/dist/esm/models/SupermodelIR.js +1 -1
- package/dist/esm/models/SupermodelIRAsync.d.ts +1 -1
- package/dist/esm/models/SupermodelIRAsync.js +1 -1
- package/dist/esm/models/SupermodelIRGraph.d.ts +1 -1
- package/dist/esm/models/SupermodelIRGraph.js +1 -1
- package/dist/esm/models/SupermodelIRStats.d.ts +1 -1
- package/dist/esm/models/SupermodelIRStats.js +1 -1
- package/dist/esm/models/TestCoverageMapMetadata.d.ts +85 -0
- package/dist/esm/models/TestCoverageMapMetadata.js +72 -0
- package/dist/esm/models/TestCoverageMapResponse.d.ts +67 -0
- package/dist/esm/models/TestCoverageMapResponse.js +64 -0
- package/dist/esm/models/TestCoverageMapResponseAsync.d.ts +66 -0
- package/dist/esm/models/TestCoverageMapResponseAsync.js +60 -0
- package/dist/esm/models/TestFileInfo.d.ts +49 -0
- package/dist/esm/models/TestFileInfo.js +52 -0
- package/dist/esm/models/TestedFunction.d.ts +80 -0
- package/dist/esm/models/TestedFunction.js +76 -0
- package/dist/esm/models/TestedSibling.d.ts +43 -0
- package/dist/esm/models/TestedSibling.js +48 -0
- package/dist/esm/models/UnassignedFunction.d.ts +1 -1
- package/dist/esm/models/UnassignedFunction.js +1 -1
- package/dist/esm/models/UntestedFunction.d.ts +103 -0
- package/dist/esm/models/UntestedFunction.js +88 -0
- package/dist/esm/models/index.d.ts +28 -0
- package/dist/esm/models/index.js +28 -0
- package/dist/esm/runtime.d.ts +1 -1
- package/dist/esm/runtime.js +1 -1
- package/dist/models/AffectedEntryPoint.d.ts +53 -0
- package/dist/models/AffectedEntryPoint.js +64 -0
- package/dist/models/AffectedFile.d.ts +43 -0
- package/dist/models/AffectedFile.js +54 -0
- package/dist/models/AffectedFunction.d.ts +78 -0
- package/dist/models/AffectedFunction.js +80 -0
- package/dist/models/AliveCodeItem.d.ts +1 -1
- package/dist/models/AliveCodeItem.js +1 -1
- package/dist/models/BlastRadius.d.ts +71 -0
- package/dist/models/BlastRadius.js +72 -0
- package/dist/models/CircularDependencyCycle.d.ts +65 -0
- package/dist/models/CircularDependencyCycle.js +70 -0
- package/dist/models/CircularDependencyMetadata.d.ts +61 -0
- package/dist/models/CircularDependencyMetadata.js +62 -0
- package/dist/models/CircularDependencyResponse.d.ts +46 -0
- package/dist/models/CircularDependencyResponse.js +57 -0
- package/dist/models/CircularDependencyResponseAsync.d.ts +66 -0
- package/dist/models/CircularDependencyResponseAsync.js +67 -0
- package/dist/models/CircularDependencySummary.d.ts +55 -0
- package/dist/models/CircularDependencySummary.js +62 -0
- package/dist/models/ClassificationStats.d.ts +1 -1
- package/dist/models/ClassificationStats.js +1 -1
- package/dist/models/CodeGraphEnvelope.d.ts +1 -1
- package/dist/models/CodeGraphEnvelope.js +1 -1
- package/dist/models/CodeGraphEnvelopeAsync.d.ts +1 -1
- package/dist/models/CodeGraphEnvelopeAsync.js +1 -1
- package/dist/models/CodeGraphEnvelopeGraph.d.ts +1 -1
- package/dist/models/CodeGraphEnvelopeGraph.js +1 -1
- package/dist/models/CodeGraphEnvelopeMetadata.d.ts +1 -1
- package/dist/models/CodeGraphEnvelopeMetadata.js +1 -1
- package/dist/models/CodeGraphNode.d.ts +1 -1
- package/dist/models/CodeGraphNode.js +1 -1
- package/dist/models/CodeGraphRelationship.d.ts +1 -1
- package/dist/models/CodeGraphRelationship.js +1 -1
- package/dist/models/CodeGraphStats.d.ts +1 -1
- package/dist/models/CodeGraphStats.js +1 -1
- package/dist/models/CoverageByDomain.d.ts +49 -0
- package/dist/models/CoverageByDomain.js +58 -0
- package/dist/models/CoverageByFile.d.ts +55 -0
- package/dist/models/CoverageByFile.js +62 -0
- package/dist/models/CriticalFile.d.ts +53 -0
- package/dist/models/CriticalFile.js +64 -0
- package/dist/models/CrossDomainDependency.d.ts +43 -0
- package/dist/models/CrossDomainDependency.js +54 -0
- package/dist/models/CycleEdge.d.ts +43 -0
- package/dist/models/CycleEdge.js +54 -0
- package/dist/models/DeadCodeAnalysisMetadata.d.ts +1 -1
- package/dist/models/DeadCodeAnalysisMetadata.js +1 -1
- package/dist/models/DeadCodeAnalysisResponse.d.ts +1 -1
- package/dist/models/DeadCodeAnalysisResponse.js +1 -1
- package/dist/models/DeadCodeAnalysisResponseAsync.d.ts +1 -1
- package/dist/models/DeadCodeAnalysisResponseAsync.js +1 -1
- package/dist/models/DeadCodeCandidate.d.ts +1 -1
- package/dist/models/DeadCodeCandidate.js +1 -1
- package/dist/models/DomainClassAssignment.d.ts +1 -1
- package/dist/models/DomainClassAssignment.js +1 -1
- package/dist/models/DomainClassificationResponse.d.ts +1 -1
- package/dist/models/DomainClassificationResponse.js +1 -1
- package/dist/models/DomainClassificationResponseAsync.d.ts +1 -1
- package/dist/models/DomainClassificationResponseAsync.js +1 -1
- package/dist/models/DomainClassificationResponseGraph.d.ts +1 -1
- package/dist/models/DomainClassificationResponseGraph.js +1 -1
- package/dist/models/DomainFileAssignment.d.ts +1 -1
- package/dist/models/DomainFileAssignment.js +1 -1
- package/dist/models/DomainFunctionAssignment.d.ts +1 -1
- package/dist/models/DomainFunctionAssignment.js +1 -1
- package/dist/models/DomainRelationship.d.ts +1 -1
- package/dist/models/DomainRelationship.js +1 -1
- package/dist/models/DomainSummary.d.ts +1 -1
- package/dist/models/DomainSummary.js +1 -1
- package/dist/models/EntryPoint.d.ts +1 -1
- package/dist/models/EntryPoint.js +1 -1
- package/dist/models/ErrorDetailsInner.d.ts +1 -1
- package/dist/models/ErrorDetailsInner.js +1 -1
- package/dist/models/FunctionDescription.d.ts +1 -1
- package/dist/models/FunctionDescription.js +1 -1
- package/dist/models/ImpactAnalysisMetadata.d.ts +61 -0
- package/dist/models/ImpactAnalysisMetadata.js +62 -0
- package/dist/models/ImpactAnalysisResponse.d.ts +46 -0
- package/dist/models/ImpactAnalysisResponse.js +57 -0
- package/dist/models/ImpactAnalysisResponseAsync.d.ts +66 -0
- package/dist/models/ImpactAnalysisResponseAsync.js +67 -0
- package/dist/models/ImpactGlobalMetrics.d.ts +39 -0
- package/dist/models/ImpactGlobalMetrics.js +48 -0
- package/dist/models/ImpactResult.d.ts +60 -0
- package/dist/models/ImpactResult.js +67 -0
- package/dist/models/ImpactTarget.d.ts +59 -0
- package/dist/models/ImpactTarget.js +64 -0
- package/dist/models/JobStatus.d.ts +1 -1
- package/dist/models/JobStatus.js +1 -1
- package/dist/models/ModelError.d.ts +1 -1
- package/dist/models/ModelError.js +1 -1
- package/dist/models/NearestTestedCaller.d.ts +43 -0
- package/dist/models/NearestTestedCaller.js +54 -0
- package/dist/models/SubdomainSummary.d.ts +1 -1
- package/dist/models/SubdomainSummary.js +1 -1
- package/dist/models/SupermodelArtifact.d.ts +1 -1
- package/dist/models/SupermodelArtifact.js +1 -1
- package/dist/models/SupermodelIR.d.ts +1 -1
- package/dist/models/SupermodelIR.js +1 -1
- package/dist/models/SupermodelIRAsync.d.ts +1 -1
- package/dist/models/SupermodelIRAsync.js +1 -1
- package/dist/models/SupermodelIRGraph.d.ts +1 -1
- package/dist/models/SupermodelIRGraph.js +1 -1
- package/dist/models/SupermodelIRStats.d.ts +1 -1
- package/dist/models/SupermodelIRStats.js +1 -1
- package/dist/models/TestCoverageMapMetadata.d.ts +85 -0
- package/dist/models/TestCoverageMapMetadata.js +78 -0
- package/dist/models/TestCoverageMapResponse.d.ts +67 -0
- package/dist/models/TestCoverageMapResponse.js +70 -0
- package/dist/models/TestCoverageMapResponseAsync.d.ts +66 -0
- package/dist/models/TestCoverageMapResponseAsync.js +67 -0
- package/dist/models/TestFileInfo.d.ts +49 -0
- package/dist/models/TestFileInfo.js +58 -0
- package/dist/models/TestedFunction.d.ts +80 -0
- package/dist/models/TestedFunction.js +83 -0
- package/dist/models/TestedSibling.d.ts +43 -0
- package/dist/models/TestedSibling.js +54 -0
- package/dist/models/UnassignedFunction.d.ts +1 -1
- package/dist/models/UnassignedFunction.js +1 -1
- package/dist/models/UntestedFunction.d.ts +103 -0
- package/dist/models/UntestedFunction.js +95 -0
- package/dist/models/index.d.ts +28 -0
- package/dist/models/index.js +28 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Supermodel
|
|
3
3
|
* Code Graphing & Analysis API
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 0.9.
|
|
5
|
+
* The version of the OpenAPI document: 0.9.5
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -10,11 +10,15 @@
|
|
|
10
10
|
* Do not edit the class manually.
|
|
11
11
|
*/
|
|
12
12
|
import * as runtime from '../runtime';
|
|
13
|
-
import type { CodeGraphEnvelopeAsync, DeadCodeAnalysisResponseAsync, DomainClassificationResponseAsync, SupermodelIRAsync } from '../models/index';
|
|
13
|
+
import type { CircularDependencyResponseAsync, CodeGraphEnvelopeAsync, DeadCodeAnalysisResponseAsync, DomainClassificationResponseAsync, ImpactAnalysisResponseAsync, SupermodelIRAsync, TestCoverageMapResponseAsync } from '../models/index';
|
|
14
14
|
export interface GenerateCallGraphRequest {
|
|
15
15
|
idempotencyKey: string;
|
|
16
16
|
file: Blob;
|
|
17
17
|
}
|
|
18
|
+
export interface GenerateCircularDependencyAnalysisRequest {
|
|
19
|
+
idempotencyKey: string;
|
|
20
|
+
file: Blob;
|
|
21
|
+
}
|
|
18
22
|
export interface GenerateDeadCodeAnalysisRequest {
|
|
19
23
|
idempotencyKey: string;
|
|
20
24
|
file: Blob;
|
|
@@ -27,6 +31,12 @@ export interface GenerateDomainGraphRequest {
|
|
|
27
31
|
idempotencyKey: string;
|
|
28
32
|
file: Blob;
|
|
29
33
|
}
|
|
34
|
+
export interface GenerateImpactAnalysisRequest {
|
|
35
|
+
idempotencyKey: string;
|
|
36
|
+
file: Blob;
|
|
37
|
+
targets?: string;
|
|
38
|
+
diff?: Blob;
|
|
39
|
+
}
|
|
30
40
|
export interface GenerateParseGraphRequest {
|
|
31
41
|
idempotencyKey: string;
|
|
32
42
|
file: Blob;
|
|
@@ -35,6 +45,10 @@ export interface GenerateSupermodelGraphRequest {
|
|
|
35
45
|
idempotencyKey: string;
|
|
36
46
|
file: Blob;
|
|
37
47
|
}
|
|
48
|
+
export interface GenerateTestCoverageMapRequest {
|
|
49
|
+
idempotencyKey: string;
|
|
50
|
+
file: Blob;
|
|
51
|
+
}
|
|
38
52
|
/**
|
|
39
53
|
*
|
|
40
54
|
*/
|
|
@@ -49,6 +63,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
|
|
|
49
63
|
* Call graph
|
|
50
64
|
*/
|
|
51
65
|
generateCallGraph(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
|
|
66
|
+
/**
|
|
67
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
68
|
+
* Circular dependency detection
|
|
69
|
+
*/
|
|
70
|
+
generateCircularDependencyAnalysisRaw(requestParameters: GenerateCircularDependencyAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CircularDependencyResponseAsync>>;
|
|
71
|
+
/**
|
|
72
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
73
|
+
* Circular dependency detection
|
|
74
|
+
*/
|
|
75
|
+
generateCircularDependencyAnalysis(requestParameters: GenerateCircularDependencyAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CircularDependencyResponseAsync>;
|
|
52
76
|
/**
|
|
53
77
|
* Upload a zipped repository snapshot to identify dead (unreachable) code candidates by combining parse graph declarations with call graph relationships.
|
|
54
78
|
* Dead code analysis
|
|
@@ -79,6 +103,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
|
|
|
79
103
|
* Domain graph
|
|
80
104
|
*/
|
|
81
105
|
generateDomainGraph(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DomainClassificationResponseAsync>;
|
|
106
|
+
/**
|
|
107
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
108
|
+
* Impact analysis
|
|
109
|
+
*/
|
|
110
|
+
generateImpactAnalysisRaw(requestParameters: GenerateImpactAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ImpactAnalysisResponseAsync>>;
|
|
111
|
+
/**
|
|
112
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
113
|
+
* Impact analysis
|
|
114
|
+
*/
|
|
115
|
+
generateImpactAnalysis(requestParameters: GenerateImpactAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ImpactAnalysisResponseAsync>;
|
|
82
116
|
/**
|
|
83
117
|
* Upload a zipped repository snapshot to generate parse tree relationships.
|
|
84
118
|
* Parse graph
|
|
@@ -99,4 +133,14 @@ export declare class DefaultApi extends runtime.BaseAPI {
|
|
|
99
133
|
* Supermodel graph
|
|
100
134
|
*/
|
|
101
135
|
generateSupermodelGraph(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SupermodelIRAsync>;
|
|
136
|
+
/**
|
|
137
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
138
|
+
* Test coverage map
|
|
139
|
+
*/
|
|
140
|
+
generateTestCoverageMapRaw(requestParameters: GenerateTestCoverageMapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TestCoverageMapResponseAsync>>;
|
|
141
|
+
/**
|
|
142
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
143
|
+
* Test coverage map
|
|
144
|
+
*/
|
|
145
|
+
generateTestCoverageMap(requestParameters: GenerateTestCoverageMapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TestCoverageMapResponseAsync>;
|
|
102
146
|
}
|
package/dist/apis/DefaultApi.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Supermodel
|
|
6
6
|
* Code Graphing & Analysis API
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document: 0.9.
|
|
8
|
+
* The version of the OpenAPI document: 0.9.5
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
11
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -87,6 +87,64 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
87
87
|
return yield response.value();
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
92
|
+
* Circular dependency detection
|
|
93
|
+
*/
|
|
94
|
+
generateCircularDependencyAnalysisRaw(requestParameters, initOverrides) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
if (requestParameters['idempotencyKey'] == null) {
|
|
97
|
+
throw new runtime.RequiredError('idempotencyKey', 'Required parameter "idempotencyKey" was null or undefined when calling generateCircularDependencyAnalysis().');
|
|
98
|
+
}
|
|
99
|
+
if (requestParameters['file'] == null) {
|
|
100
|
+
throw new runtime.RequiredError('file', 'Required parameter "file" was null or undefined when calling generateCircularDependencyAnalysis().');
|
|
101
|
+
}
|
|
102
|
+
const queryParameters = {};
|
|
103
|
+
const headerParameters = {};
|
|
104
|
+
if (requestParameters['idempotencyKey'] != null) {
|
|
105
|
+
headerParameters['Idempotency-Key'] = String(requestParameters['idempotencyKey']);
|
|
106
|
+
}
|
|
107
|
+
if (this.configuration && this.configuration.apiKey) {
|
|
108
|
+
headerParameters["X-Api-Key"] = yield this.configuration.apiKey("X-Api-Key"); // ApiKeyAuth authentication
|
|
109
|
+
}
|
|
110
|
+
const consumes = [
|
|
111
|
+
{ contentType: 'multipart/form-data' },
|
|
112
|
+
];
|
|
113
|
+
// @ts-ignore: canConsumeForm may be unused
|
|
114
|
+
const canConsumeForm = runtime.canConsumeForm(consumes);
|
|
115
|
+
let formParams;
|
|
116
|
+
let useForm = false;
|
|
117
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
118
|
+
useForm = canConsumeForm;
|
|
119
|
+
if (useForm) {
|
|
120
|
+
formParams = new FormData();
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
formParams = new URLSearchParams();
|
|
124
|
+
}
|
|
125
|
+
if (requestParameters['file'] != null) {
|
|
126
|
+
formParams.append('file', requestParameters['file']);
|
|
127
|
+
}
|
|
128
|
+
const response = yield this.request({
|
|
129
|
+
path: `/v1/analysis/circular-dependencies`,
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: headerParameters,
|
|
132
|
+
query: queryParameters,
|
|
133
|
+
body: formParams,
|
|
134
|
+
}, initOverrides);
|
|
135
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CircularDependencyResponseAsyncFromJSON)(jsonValue));
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
140
|
+
* Circular dependency detection
|
|
141
|
+
*/
|
|
142
|
+
generateCircularDependencyAnalysis(requestParameters, initOverrides) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
const response = yield this.generateCircularDependencyAnalysisRaw(requestParameters, initOverrides);
|
|
145
|
+
return yield response.value();
|
|
146
|
+
});
|
|
147
|
+
}
|
|
90
148
|
/**
|
|
91
149
|
* Upload a zipped repository snapshot to identify dead (unreachable) code candidates by combining parse graph declarations with call graph relationships.
|
|
92
150
|
* Dead code analysis
|
|
@@ -261,6 +319,72 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
261
319
|
return yield response.value();
|
|
262
320
|
});
|
|
263
321
|
}
|
|
322
|
+
/**
|
|
323
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
324
|
+
* Impact analysis
|
|
325
|
+
*/
|
|
326
|
+
generateImpactAnalysisRaw(requestParameters, initOverrides) {
|
|
327
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
328
|
+
if (requestParameters['idempotencyKey'] == null) {
|
|
329
|
+
throw new runtime.RequiredError('idempotencyKey', 'Required parameter "idempotencyKey" was null or undefined when calling generateImpactAnalysis().');
|
|
330
|
+
}
|
|
331
|
+
if (requestParameters['file'] == null) {
|
|
332
|
+
throw new runtime.RequiredError('file', 'Required parameter "file" was null or undefined when calling generateImpactAnalysis().');
|
|
333
|
+
}
|
|
334
|
+
const queryParameters = {};
|
|
335
|
+
if (requestParameters['targets'] != null) {
|
|
336
|
+
queryParameters['targets'] = requestParameters['targets'];
|
|
337
|
+
}
|
|
338
|
+
const headerParameters = {};
|
|
339
|
+
if (requestParameters['idempotencyKey'] != null) {
|
|
340
|
+
headerParameters['Idempotency-Key'] = String(requestParameters['idempotencyKey']);
|
|
341
|
+
}
|
|
342
|
+
if (this.configuration && this.configuration.apiKey) {
|
|
343
|
+
headerParameters["X-Api-Key"] = yield this.configuration.apiKey("X-Api-Key"); // ApiKeyAuth authentication
|
|
344
|
+
}
|
|
345
|
+
const consumes = [
|
|
346
|
+
{ contentType: 'multipart/form-data' },
|
|
347
|
+
];
|
|
348
|
+
// @ts-ignore: canConsumeForm may be unused
|
|
349
|
+
const canConsumeForm = runtime.canConsumeForm(consumes);
|
|
350
|
+
let formParams;
|
|
351
|
+
let useForm = false;
|
|
352
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
353
|
+
useForm = canConsumeForm;
|
|
354
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
355
|
+
useForm = canConsumeForm;
|
|
356
|
+
if (useForm) {
|
|
357
|
+
formParams = new FormData();
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
formParams = new URLSearchParams();
|
|
361
|
+
}
|
|
362
|
+
if (requestParameters['file'] != null) {
|
|
363
|
+
formParams.append('file', requestParameters['file']);
|
|
364
|
+
}
|
|
365
|
+
if (requestParameters['diff'] != null) {
|
|
366
|
+
formParams.append('diff', requestParameters['diff']);
|
|
367
|
+
}
|
|
368
|
+
const response = yield this.request({
|
|
369
|
+
path: `/v1/analysis/impact`,
|
|
370
|
+
method: 'POST',
|
|
371
|
+
headers: headerParameters,
|
|
372
|
+
query: queryParameters,
|
|
373
|
+
body: formParams,
|
|
374
|
+
}, initOverrides);
|
|
375
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.ImpactAnalysisResponseAsyncFromJSON)(jsonValue));
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
380
|
+
* Impact analysis
|
|
381
|
+
*/
|
|
382
|
+
generateImpactAnalysis(requestParameters, initOverrides) {
|
|
383
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
384
|
+
const response = yield this.generateImpactAnalysisRaw(requestParameters, initOverrides);
|
|
385
|
+
return yield response.value();
|
|
386
|
+
});
|
|
387
|
+
}
|
|
264
388
|
/**
|
|
265
389
|
* Upload a zipped repository snapshot to generate parse tree relationships.
|
|
266
390
|
* Parse graph
|
|
@@ -377,5 +501,63 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
377
501
|
return yield response.value();
|
|
378
502
|
});
|
|
379
503
|
}
|
|
504
|
+
/**
|
|
505
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
506
|
+
* Test coverage map
|
|
507
|
+
*/
|
|
508
|
+
generateTestCoverageMapRaw(requestParameters, initOverrides) {
|
|
509
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
510
|
+
if (requestParameters['idempotencyKey'] == null) {
|
|
511
|
+
throw new runtime.RequiredError('idempotencyKey', 'Required parameter "idempotencyKey" was null or undefined when calling generateTestCoverageMap().');
|
|
512
|
+
}
|
|
513
|
+
if (requestParameters['file'] == null) {
|
|
514
|
+
throw new runtime.RequiredError('file', 'Required parameter "file" was null or undefined when calling generateTestCoverageMap().');
|
|
515
|
+
}
|
|
516
|
+
const queryParameters = {};
|
|
517
|
+
const headerParameters = {};
|
|
518
|
+
if (requestParameters['idempotencyKey'] != null) {
|
|
519
|
+
headerParameters['Idempotency-Key'] = String(requestParameters['idempotencyKey']);
|
|
520
|
+
}
|
|
521
|
+
if (this.configuration && this.configuration.apiKey) {
|
|
522
|
+
headerParameters["X-Api-Key"] = yield this.configuration.apiKey("X-Api-Key"); // ApiKeyAuth authentication
|
|
523
|
+
}
|
|
524
|
+
const consumes = [
|
|
525
|
+
{ contentType: 'multipart/form-data' },
|
|
526
|
+
];
|
|
527
|
+
// @ts-ignore: canConsumeForm may be unused
|
|
528
|
+
const canConsumeForm = runtime.canConsumeForm(consumes);
|
|
529
|
+
let formParams;
|
|
530
|
+
let useForm = false;
|
|
531
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
532
|
+
useForm = canConsumeForm;
|
|
533
|
+
if (useForm) {
|
|
534
|
+
formParams = new FormData();
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
formParams = new URLSearchParams();
|
|
538
|
+
}
|
|
539
|
+
if (requestParameters['file'] != null) {
|
|
540
|
+
formParams.append('file', requestParameters['file']);
|
|
541
|
+
}
|
|
542
|
+
const response = yield this.request({
|
|
543
|
+
path: `/v1/analysis/test-coverage-map`,
|
|
544
|
+
method: 'POST',
|
|
545
|
+
headers: headerParameters,
|
|
546
|
+
query: queryParameters,
|
|
547
|
+
body: formParams,
|
|
548
|
+
}, initOverrides);
|
|
549
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.TestCoverageMapResponseAsyncFromJSON)(jsonValue));
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
554
|
+
* Test coverage map
|
|
555
|
+
*/
|
|
556
|
+
generateTestCoverageMap(requestParameters, initOverrides) {
|
|
557
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
558
|
+
const response = yield this.generateTestCoverageMapRaw(requestParameters, initOverrides);
|
|
559
|
+
return yield response.value();
|
|
560
|
+
});
|
|
561
|
+
}
|
|
380
562
|
}
|
|
381
563
|
exports.DefaultApi = DefaultApi;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Supermodel
|
|
3
3
|
* Code Graphing & Analysis API
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 0.9.
|
|
5
|
+
* The version of the OpenAPI document: 0.9.5
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -10,11 +10,15 @@
|
|
|
10
10
|
* Do not edit the class manually.
|
|
11
11
|
*/
|
|
12
12
|
import * as runtime from '../runtime';
|
|
13
|
-
import type { CodeGraphEnvelopeAsync, DeadCodeAnalysisResponseAsync, DomainClassificationResponseAsync, SupermodelIRAsync } from '../models/index';
|
|
13
|
+
import type { CircularDependencyResponseAsync, CodeGraphEnvelopeAsync, DeadCodeAnalysisResponseAsync, DomainClassificationResponseAsync, ImpactAnalysisResponseAsync, SupermodelIRAsync, TestCoverageMapResponseAsync } from '../models/index';
|
|
14
14
|
export interface GenerateCallGraphRequest {
|
|
15
15
|
idempotencyKey: string;
|
|
16
16
|
file: Blob;
|
|
17
17
|
}
|
|
18
|
+
export interface GenerateCircularDependencyAnalysisRequest {
|
|
19
|
+
idempotencyKey: string;
|
|
20
|
+
file: Blob;
|
|
21
|
+
}
|
|
18
22
|
export interface GenerateDeadCodeAnalysisRequest {
|
|
19
23
|
idempotencyKey: string;
|
|
20
24
|
file: Blob;
|
|
@@ -27,6 +31,12 @@ export interface GenerateDomainGraphRequest {
|
|
|
27
31
|
idempotencyKey: string;
|
|
28
32
|
file: Blob;
|
|
29
33
|
}
|
|
34
|
+
export interface GenerateImpactAnalysisRequest {
|
|
35
|
+
idempotencyKey: string;
|
|
36
|
+
file: Blob;
|
|
37
|
+
targets?: string;
|
|
38
|
+
diff?: Blob;
|
|
39
|
+
}
|
|
30
40
|
export interface GenerateParseGraphRequest {
|
|
31
41
|
idempotencyKey: string;
|
|
32
42
|
file: Blob;
|
|
@@ -35,6 +45,10 @@ export interface GenerateSupermodelGraphRequest {
|
|
|
35
45
|
idempotencyKey: string;
|
|
36
46
|
file: Blob;
|
|
37
47
|
}
|
|
48
|
+
export interface GenerateTestCoverageMapRequest {
|
|
49
|
+
idempotencyKey: string;
|
|
50
|
+
file: Blob;
|
|
51
|
+
}
|
|
38
52
|
/**
|
|
39
53
|
*
|
|
40
54
|
*/
|
|
@@ -49,6 +63,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
|
|
|
49
63
|
* Call graph
|
|
50
64
|
*/
|
|
51
65
|
generateCallGraph(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
|
|
66
|
+
/**
|
|
67
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
68
|
+
* Circular dependency detection
|
|
69
|
+
*/
|
|
70
|
+
generateCircularDependencyAnalysisRaw(requestParameters: GenerateCircularDependencyAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CircularDependencyResponseAsync>>;
|
|
71
|
+
/**
|
|
72
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
73
|
+
* Circular dependency detection
|
|
74
|
+
*/
|
|
75
|
+
generateCircularDependencyAnalysis(requestParameters: GenerateCircularDependencyAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CircularDependencyResponseAsync>;
|
|
52
76
|
/**
|
|
53
77
|
* Upload a zipped repository snapshot to identify dead (unreachable) code candidates by combining parse graph declarations with call graph relationships.
|
|
54
78
|
* Dead code analysis
|
|
@@ -79,6 +103,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
|
|
|
79
103
|
* Domain graph
|
|
80
104
|
*/
|
|
81
105
|
generateDomainGraph(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DomainClassificationResponseAsync>;
|
|
106
|
+
/**
|
|
107
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
108
|
+
* Impact analysis
|
|
109
|
+
*/
|
|
110
|
+
generateImpactAnalysisRaw(requestParameters: GenerateImpactAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ImpactAnalysisResponseAsync>>;
|
|
111
|
+
/**
|
|
112
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
113
|
+
* Impact analysis
|
|
114
|
+
*/
|
|
115
|
+
generateImpactAnalysis(requestParameters: GenerateImpactAnalysisRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ImpactAnalysisResponseAsync>;
|
|
82
116
|
/**
|
|
83
117
|
* Upload a zipped repository snapshot to generate parse tree relationships.
|
|
84
118
|
* Parse graph
|
|
@@ -99,4 +133,14 @@ export declare class DefaultApi extends runtime.BaseAPI {
|
|
|
99
133
|
* Supermodel graph
|
|
100
134
|
*/
|
|
101
135
|
generateSupermodelGraph(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SupermodelIRAsync>;
|
|
136
|
+
/**
|
|
137
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
138
|
+
* Test coverage map
|
|
139
|
+
*/
|
|
140
|
+
generateTestCoverageMapRaw(requestParameters: GenerateTestCoverageMapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TestCoverageMapResponseAsync>>;
|
|
141
|
+
/**
|
|
142
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
143
|
+
* Test coverage map
|
|
144
|
+
*/
|
|
145
|
+
generateTestCoverageMap(requestParameters: GenerateTestCoverageMapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TestCoverageMapResponseAsync>;
|
|
102
146
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Supermodel
|
|
5
5
|
* Code Graphing & Analysis API
|
|
6
6
|
*
|
|
7
|
-
* The version of the OpenAPI document: 0.9.
|
|
7
|
+
* The version of the OpenAPI document: 0.9.5
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
10
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -21,7 +21,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
23
|
import * as runtime from '../runtime';
|
|
24
|
-
import { CodeGraphEnvelopeAsyncFromJSON, DeadCodeAnalysisResponseAsyncFromJSON, DomainClassificationResponseAsyncFromJSON, SupermodelIRAsyncFromJSON, } from '../models/index';
|
|
24
|
+
import { CircularDependencyResponseAsyncFromJSON, CodeGraphEnvelopeAsyncFromJSON, DeadCodeAnalysisResponseAsyncFromJSON, DomainClassificationResponseAsyncFromJSON, ImpactAnalysisResponseAsyncFromJSON, SupermodelIRAsyncFromJSON, TestCoverageMapResponseAsyncFromJSON, } from '../models/index';
|
|
25
25
|
/**
|
|
26
26
|
*
|
|
27
27
|
*/
|
|
@@ -84,6 +84,64 @@ export class DefaultApi extends runtime.BaseAPI {
|
|
|
84
84
|
return yield response.value();
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
89
|
+
* Circular dependency detection
|
|
90
|
+
*/
|
|
91
|
+
generateCircularDependencyAnalysisRaw(requestParameters, initOverrides) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
if (requestParameters['idempotencyKey'] == null) {
|
|
94
|
+
throw new runtime.RequiredError('idempotencyKey', 'Required parameter "idempotencyKey" was null or undefined when calling generateCircularDependencyAnalysis().');
|
|
95
|
+
}
|
|
96
|
+
if (requestParameters['file'] == null) {
|
|
97
|
+
throw new runtime.RequiredError('file', 'Required parameter "file" was null or undefined when calling generateCircularDependencyAnalysis().');
|
|
98
|
+
}
|
|
99
|
+
const queryParameters = {};
|
|
100
|
+
const headerParameters = {};
|
|
101
|
+
if (requestParameters['idempotencyKey'] != null) {
|
|
102
|
+
headerParameters['Idempotency-Key'] = String(requestParameters['idempotencyKey']);
|
|
103
|
+
}
|
|
104
|
+
if (this.configuration && this.configuration.apiKey) {
|
|
105
|
+
headerParameters["X-Api-Key"] = yield this.configuration.apiKey("X-Api-Key"); // ApiKeyAuth authentication
|
|
106
|
+
}
|
|
107
|
+
const consumes = [
|
|
108
|
+
{ contentType: 'multipart/form-data' },
|
|
109
|
+
];
|
|
110
|
+
// @ts-ignore: canConsumeForm may be unused
|
|
111
|
+
const canConsumeForm = runtime.canConsumeForm(consumes);
|
|
112
|
+
let formParams;
|
|
113
|
+
let useForm = false;
|
|
114
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
115
|
+
useForm = canConsumeForm;
|
|
116
|
+
if (useForm) {
|
|
117
|
+
formParams = new FormData();
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
formParams = new URLSearchParams();
|
|
121
|
+
}
|
|
122
|
+
if (requestParameters['file'] != null) {
|
|
123
|
+
formParams.append('file', requestParameters['file']);
|
|
124
|
+
}
|
|
125
|
+
const response = yield this.request({
|
|
126
|
+
path: `/v1/analysis/circular-dependencies`,
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: headerParameters,
|
|
129
|
+
query: queryParameters,
|
|
130
|
+
body: formParams,
|
|
131
|
+
}, initOverrides);
|
|
132
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => CircularDependencyResponseAsyncFromJSON(jsonValue));
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Upload a zipped repository snapshot to detect circular dependencies (dependency cycles) at the file level using Tarjan\'s strongly connected components algorithm.
|
|
137
|
+
* Circular dependency detection
|
|
138
|
+
*/
|
|
139
|
+
generateCircularDependencyAnalysis(requestParameters, initOverrides) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const response = yield this.generateCircularDependencyAnalysisRaw(requestParameters, initOverrides);
|
|
142
|
+
return yield response.value();
|
|
143
|
+
});
|
|
144
|
+
}
|
|
87
145
|
/**
|
|
88
146
|
* Upload a zipped repository snapshot to identify dead (unreachable) code candidates by combining parse graph declarations with call graph relationships.
|
|
89
147
|
* Dead code analysis
|
|
@@ -258,6 +316,72 @@ export class DefaultApi extends runtime.BaseAPI {
|
|
|
258
316
|
return yield response.value();
|
|
259
317
|
});
|
|
260
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
321
|
+
* Impact analysis
|
|
322
|
+
*/
|
|
323
|
+
generateImpactAnalysisRaw(requestParameters, initOverrides) {
|
|
324
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
325
|
+
if (requestParameters['idempotencyKey'] == null) {
|
|
326
|
+
throw new runtime.RequiredError('idempotencyKey', 'Required parameter "idempotencyKey" was null or undefined when calling generateImpactAnalysis().');
|
|
327
|
+
}
|
|
328
|
+
if (requestParameters['file'] == null) {
|
|
329
|
+
throw new runtime.RequiredError('file', 'Required parameter "file" was null or undefined when calling generateImpactAnalysis().');
|
|
330
|
+
}
|
|
331
|
+
const queryParameters = {};
|
|
332
|
+
if (requestParameters['targets'] != null) {
|
|
333
|
+
queryParameters['targets'] = requestParameters['targets'];
|
|
334
|
+
}
|
|
335
|
+
const headerParameters = {};
|
|
336
|
+
if (requestParameters['idempotencyKey'] != null) {
|
|
337
|
+
headerParameters['Idempotency-Key'] = String(requestParameters['idempotencyKey']);
|
|
338
|
+
}
|
|
339
|
+
if (this.configuration && this.configuration.apiKey) {
|
|
340
|
+
headerParameters["X-Api-Key"] = yield this.configuration.apiKey("X-Api-Key"); // ApiKeyAuth authentication
|
|
341
|
+
}
|
|
342
|
+
const consumes = [
|
|
343
|
+
{ contentType: 'multipart/form-data' },
|
|
344
|
+
];
|
|
345
|
+
// @ts-ignore: canConsumeForm may be unused
|
|
346
|
+
const canConsumeForm = runtime.canConsumeForm(consumes);
|
|
347
|
+
let formParams;
|
|
348
|
+
let useForm = false;
|
|
349
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
350
|
+
useForm = canConsumeForm;
|
|
351
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
352
|
+
useForm = canConsumeForm;
|
|
353
|
+
if (useForm) {
|
|
354
|
+
formParams = new FormData();
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
formParams = new URLSearchParams();
|
|
358
|
+
}
|
|
359
|
+
if (requestParameters['file'] != null) {
|
|
360
|
+
formParams.append('file', requestParameters['file']);
|
|
361
|
+
}
|
|
362
|
+
if (requestParameters['diff'] != null) {
|
|
363
|
+
formParams.append('diff', requestParameters['diff']);
|
|
364
|
+
}
|
|
365
|
+
const response = yield this.request({
|
|
366
|
+
path: `/v1/analysis/impact`,
|
|
367
|
+
method: 'POST',
|
|
368
|
+
headers: headerParameters,
|
|
369
|
+
query: queryParameters,
|
|
370
|
+
body: formParams,
|
|
371
|
+
}, initOverrides);
|
|
372
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => ImpactAnalysisResponseAsyncFromJSON(jsonValue));
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Compute blast radius — what breaks if a given file or function changes. Uses reverse-reachability BFS on call graph and dependency graph, enriched with LLM-powered domain classification to detect cross-domain impact. **Three usage modes:** 1. **With diff** — upload a unified diff (`git diff` output) alongside the repo zip. Changed files are automatically extracted as targets. Best for CI/CD pipelines. 2. **With targets** — specify files or file:function pairs via query parameter. Best for ad-hoc analysis of specific functions. 3. **Neither** — analyzes the entire codebase and returns a global coupling/risk map with the most critical files ranked by dependent count. **CI Integration (GitHub Actions):** ```yaml - name: Impact Analysis run: | git diff origin/main...HEAD > changes.diff git archive --format=zip HEAD -o repo.zip curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" \\ -H \"Idempotency-Key: ${{ github.run_id }}-impact\" \\ -H \"X-Api-Key: ${{ secrets.SUPERMODEL_API_KEY }}\" \\ -F \"file=@repo.zip;type=application/zip\" \\ -F \"diff=@changes.diff;type=text/plain\" \\ -o impact.json ``` **CI Integration (GitLab CI):** ```yaml impact_analysis: script: - git diff origin/main...HEAD > changes.diff - git archive --format=zip HEAD -o repo.zip - >- curl -s -X POST \"$SUPERMODEL_API_URL/v1/analysis/impact\" -H \"Idempotency-Key: $CI_PIPELINE_IID-impact\" -H \"X-Api-Key: $SUPERMODEL_API_KEY\" -F \"file=@repo.zip;type=application/zip\" -F \"diff=@changes.diff;type=text/plain\" -o impact.json ``` **Standalone usage (no CI):** ```bash # Analyze specific targets curl -X POST \'.../v1/analysis/impact?targets=src/services/billing.ts:calculateTotal\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' # Analyze from a diff git diff main > changes.diff && git archive --format=zip HEAD -o repo.zip curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' \\ -F \'diff=@changes.diff;type=text/plain\' # Global coupling map (no targets, no diff) curl -X POST \'.../v1/analysis/impact\' \\ -H \'Idempotency-Key: my-key\' -H \'X-Api-Key: ...\' \\ -F \'file=@repo.zip;type=application/zip\' ```
|
|
377
|
+
* Impact analysis
|
|
378
|
+
*/
|
|
379
|
+
generateImpactAnalysis(requestParameters, initOverrides) {
|
|
380
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
381
|
+
const response = yield this.generateImpactAnalysisRaw(requestParameters, initOverrides);
|
|
382
|
+
return yield response.value();
|
|
383
|
+
});
|
|
384
|
+
}
|
|
261
385
|
/**
|
|
262
386
|
* Upload a zipped repository snapshot to generate parse tree relationships.
|
|
263
387
|
* Parse graph
|
|
@@ -374,4 +498,62 @@ export class DefaultApi extends runtime.BaseAPI {
|
|
|
374
498
|
return yield response.value();
|
|
375
499
|
});
|
|
376
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
503
|
+
* Test coverage map
|
|
504
|
+
*/
|
|
505
|
+
generateTestCoverageMapRaw(requestParameters, initOverrides) {
|
|
506
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
507
|
+
if (requestParameters['idempotencyKey'] == null) {
|
|
508
|
+
throw new runtime.RequiredError('idempotencyKey', 'Required parameter "idempotencyKey" was null or undefined when calling generateTestCoverageMap().');
|
|
509
|
+
}
|
|
510
|
+
if (requestParameters['file'] == null) {
|
|
511
|
+
throw new runtime.RequiredError('file', 'Required parameter "file" was null or undefined when calling generateTestCoverageMap().');
|
|
512
|
+
}
|
|
513
|
+
const queryParameters = {};
|
|
514
|
+
const headerParameters = {};
|
|
515
|
+
if (requestParameters['idempotencyKey'] != null) {
|
|
516
|
+
headerParameters['Idempotency-Key'] = String(requestParameters['idempotencyKey']);
|
|
517
|
+
}
|
|
518
|
+
if (this.configuration && this.configuration.apiKey) {
|
|
519
|
+
headerParameters["X-Api-Key"] = yield this.configuration.apiKey("X-Api-Key"); // ApiKeyAuth authentication
|
|
520
|
+
}
|
|
521
|
+
const consumes = [
|
|
522
|
+
{ contentType: 'multipart/form-data' },
|
|
523
|
+
];
|
|
524
|
+
// @ts-ignore: canConsumeForm may be unused
|
|
525
|
+
const canConsumeForm = runtime.canConsumeForm(consumes);
|
|
526
|
+
let formParams;
|
|
527
|
+
let useForm = false;
|
|
528
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
529
|
+
useForm = canConsumeForm;
|
|
530
|
+
if (useForm) {
|
|
531
|
+
formParams = new FormData();
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
formParams = new URLSearchParams();
|
|
535
|
+
}
|
|
536
|
+
if (requestParameters['file'] != null) {
|
|
537
|
+
formParams.append('file', requestParameters['file']);
|
|
538
|
+
}
|
|
539
|
+
const response = yield this.request({
|
|
540
|
+
path: `/v1/analysis/test-coverage-map`,
|
|
541
|
+
method: 'POST',
|
|
542
|
+
headers: headerParameters,
|
|
543
|
+
query: queryParameters,
|
|
544
|
+
body: formParams,
|
|
545
|
+
}, initOverrides);
|
|
546
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => TestCoverageMapResponseAsyncFromJSON(jsonValue));
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Upload a zipped repository snapshot to identify functions with zero test coverage by tracing call graph reachability from test files to production code. This is static analysis — no test execution or instrumentation required.
|
|
551
|
+
* Test coverage map
|
|
552
|
+
*/
|
|
553
|
+
generateTestCoverageMap(requestParameters, initOverrides) {
|
|
554
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
555
|
+
const response = yield this.generateTestCoverageMapRaw(requestParameters, initOverrides);
|
|
556
|
+
return yield response.value();
|
|
557
|
+
});
|
|
558
|
+
}
|
|
377
559
|
}
|