@supermodeltools/sdk 0.5.3 → 0.6.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.
Files changed (117) hide show
  1. package/dist/apis/DefaultApi.d.ts +12 -12
  2. package/dist/apis/DefaultApi.js +6 -6
  3. package/dist/async.d.ts +152 -0
  4. package/dist/async.js +235 -0
  5. package/dist/esm/apis/DefaultApi.d.ts +12 -12
  6. package/dist/esm/apis/DefaultApi.js +7 -7
  7. package/dist/esm/async.d.ts +152 -0
  8. package/dist/esm/async.js +229 -0
  9. package/dist/esm/index.d.ts +1 -0
  10. package/dist/esm/index.js +1 -0
  11. package/dist/esm/models/ClassificationStats.d.ts +1 -1
  12. package/dist/esm/models/ClassificationStats.js +1 -1
  13. package/dist/esm/models/CodeGraphEnvelope.d.ts +1 -1
  14. package/dist/esm/models/CodeGraphEnvelope.js +1 -1
  15. package/dist/esm/models/CodeGraphEnvelopeAsync.d.ts +66 -0
  16. package/dist/esm/models/CodeGraphEnvelopeAsync.js +60 -0
  17. package/dist/esm/models/CodeGraphEnvelopeGraph.d.ts +1 -1
  18. package/dist/esm/models/CodeGraphEnvelopeGraph.js +1 -1
  19. package/dist/esm/models/CodeGraphNode.d.ts +1 -1
  20. package/dist/esm/models/CodeGraphNode.js +1 -1
  21. package/dist/esm/models/CodeGraphRelationship.d.ts +1 -1
  22. package/dist/esm/models/CodeGraphRelationship.js +1 -1
  23. package/dist/esm/models/CodeGraphStats.d.ts +1 -1
  24. package/dist/esm/models/CodeGraphStats.js +1 -1
  25. package/dist/esm/models/DomainClassAssignment.d.ts +1 -1
  26. package/dist/esm/models/DomainClassAssignment.js +1 -1
  27. package/dist/esm/models/DomainClassificationResponse.d.ts +1 -1
  28. package/dist/esm/models/DomainClassificationResponse.js +1 -1
  29. package/dist/esm/models/DomainClassificationResponseAsync.d.ts +66 -0
  30. package/dist/esm/models/DomainClassificationResponseAsync.js +60 -0
  31. package/dist/esm/models/DomainFileAssignment.d.ts +1 -1
  32. package/dist/esm/models/DomainFileAssignment.js +1 -1
  33. package/dist/esm/models/DomainFunctionAssignment.d.ts +1 -1
  34. package/dist/esm/models/DomainFunctionAssignment.js +1 -1
  35. package/dist/esm/models/DomainRelationship.d.ts +1 -1
  36. package/dist/esm/models/DomainRelationship.js +1 -1
  37. package/dist/esm/models/DomainSummary.d.ts +1 -1
  38. package/dist/esm/models/DomainSummary.js +1 -1
  39. package/dist/esm/models/ErrorDetailsInner.d.ts +1 -1
  40. package/dist/esm/models/ErrorDetailsInner.js +1 -1
  41. package/dist/esm/models/FunctionDescription.d.ts +1 -1
  42. package/dist/esm/models/FunctionDescription.js +1 -1
  43. package/dist/esm/models/JobStatus.d.ts +59 -0
  44. package/dist/esm/models/JobStatus.js +57 -0
  45. package/dist/esm/models/ModelError.d.ts +1 -1
  46. package/dist/esm/models/ModelError.js +1 -1
  47. package/dist/esm/models/SubdomainSummary.d.ts +1 -1
  48. package/dist/esm/models/SubdomainSummary.js +1 -1
  49. package/dist/esm/models/SupermodelArtifact.d.ts +1 -1
  50. package/dist/esm/models/SupermodelArtifact.js +1 -1
  51. package/dist/esm/models/SupermodelIR.d.ts +1 -1
  52. package/dist/esm/models/SupermodelIR.js +1 -1
  53. package/dist/esm/models/SupermodelIRAsync.d.ts +66 -0
  54. package/dist/esm/models/SupermodelIRAsync.js +60 -0
  55. package/dist/esm/models/SupermodelIRGraph.d.ts +1 -1
  56. package/dist/esm/models/SupermodelIRGraph.js +1 -1
  57. package/dist/esm/models/UnassignedFunction.d.ts +1 -1
  58. package/dist/esm/models/UnassignedFunction.js +1 -1
  59. package/dist/esm/models/index.d.ts +4 -0
  60. package/dist/esm/models/index.js +4 -0
  61. package/dist/esm/runtime.d.ts +1 -1
  62. package/dist/esm/runtime.js +1 -1
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.js +1 -0
  65. package/dist/models/ClassificationStats.d.ts +1 -1
  66. package/dist/models/ClassificationStats.js +1 -1
  67. package/dist/models/CodeGraphEnvelope.d.ts +1 -1
  68. package/dist/models/CodeGraphEnvelope.js +1 -1
  69. package/dist/models/CodeGraphEnvelopeAsync.d.ts +66 -0
  70. package/dist/models/CodeGraphEnvelopeAsync.js +67 -0
  71. package/dist/models/CodeGraphEnvelopeGraph.d.ts +1 -1
  72. package/dist/models/CodeGraphEnvelopeGraph.js +1 -1
  73. package/dist/models/CodeGraphNode.d.ts +1 -1
  74. package/dist/models/CodeGraphNode.js +1 -1
  75. package/dist/models/CodeGraphRelationship.d.ts +1 -1
  76. package/dist/models/CodeGraphRelationship.js +1 -1
  77. package/dist/models/CodeGraphStats.d.ts +1 -1
  78. package/dist/models/CodeGraphStats.js +1 -1
  79. package/dist/models/DomainClassAssignment.d.ts +1 -1
  80. package/dist/models/DomainClassAssignment.js +1 -1
  81. package/dist/models/DomainClassificationResponse.d.ts +1 -1
  82. package/dist/models/DomainClassificationResponse.js +1 -1
  83. package/dist/models/DomainClassificationResponseAsync.d.ts +66 -0
  84. package/dist/models/DomainClassificationResponseAsync.js +67 -0
  85. package/dist/models/DomainFileAssignment.d.ts +1 -1
  86. package/dist/models/DomainFileAssignment.js +1 -1
  87. package/dist/models/DomainFunctionAssignment.d.ts +1 -1
  88. package/dist/models/DomainFunctionAssignment.js +1 -1
  89. package/dist/models/DomainRelationship.d.ts +1 -1
  90. package/dist/models/DomainRelationship.js +1 -1
  91. package/dist/models/DomainSummary.d.ts +1 -1
  92. package/dist/models/DomainSummary.js +1 -1
  93. package/dist/models/ErrorDetailsInner.d.ts +1 -1
  94. package/dist/models/ErrorDetailsInner.js +1 -1
  95. package/dist/models/FunctionDescription.d.ts +1 -1
  96. package/dist/models/FunctionDescription.js +1 -1
  97. package/dist/models/JobStatus.d.ts +59 -0
  98. package/dist/models/JobStatus.js +64 -0
  99. package/dist/models/ModelError.d.ts +1 -1
  100. package/dist/models/ModelError.js +1 -1
  101. package/dist/models/SubdomainSummary.d.ts +1 -1
  102. package/dist/models/SubdomainSummary.js +1 -1
  103. package/dist/models/SupermodelArtifact.d.ts +1 -1
  104. package/dist/models/SupermodelArtifact.js +1 -1
  105. package/dist/models/SupermodelIR.d.ts +1 -1
  106. package/dist/models/SupermodelIR.js +1 -1
  107. package/dist/models/SupermodelIRAsync.d.ts +66 -0
  108. package/dist/models/SupermodelIRAsync.js +67 -0
  109. package/dist/models/SupermodelIRGraph.d.ts +1 -1
  110. package/dist/models/SupermodelIRGraph.js +1 -1
  111. package/dist/models/UnassignedFunction.d.ts +1 -1
  112. package/dist/models/UnassignedFunction.js +1 -1
  113. package/dist/models/index.d.ts +4 -0
  114. package/dist/models/index.js +4 -0
  115. package/dist/runtime.d.ts +1 -1
  116. package/dist/runtime.js +1 -1
  117. 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.5.3
5
+ * The version of the OpenAPI document: 0.6.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime';
13
- import type { CodeGraphEnvelope, DomainClassificationResponse, SupermodelIR } from '../models/index';
13
+ import type { CodeGraphEnvelopeAsync, DomainClassificationResponseAsync, SupermodelIRAsync } from '../models/index';
14
14
  export interface GenerateCallGraphRequest {
15
15
  idempotencyKey: string;
16
16
  file: Blob;
@@ -39,50 +39,50 @@ export declare class DefaultApi extends runtime.BaseAPI {
39
39
  * Upload a zipped repository snapshot to generate the function-level call graph.
40
40
  * Call graph
41
41
  */
42
- generateCallGraphRaw(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelope>>;
42
+ generateCallGraphRaw(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelopeAsync>>;
43
43
  /**
44
44
  * Upload a zipped repository snapshot to generate the function-level call graph.
45
45
  * Call graph
46
46
  */
47
- generateCallGraph(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelope>;
47
+ generateCallGraph(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
48
48
  /**
49
49
  * Upload a zipped repository snapshot to generate the dependency graph.
50
50
  * Dependency graph
51
51
  */
52
- generateDependencyGraphRaw(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelope>>;
52
+ generateDependencyGraphRaw(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelopeAsync>>;
53
53
  /**
54
54
  * Upload a zipped repository snapshot to generate the dependency graph.
55
55
  * Dependency graph
56
56
  */
57
- generateDependencyGraph(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelope>;
57
+ generateDependencyGraph(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
58
58
  /**
59
59
  * Upload a zipped repository snapshot to generate the domain model graph.
60
60
  * Domain graph
61
61
  */
62
- generateDomainGraphRaw(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DomainClassificationResponse>>;
62
+ generateDomainGraphRaw(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DomainClassificationResponseAsync>>;
63
63
  /**
64
64
  * Upload a zipped repository snapshot to generate the domain model graph.
65
65
  * Domain graph
66
66
  */
67
- generateDomainGraph(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DomainClassificationResponse>;
67
+ generateDomainGraph(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DomainClassificationResponseAsync>;
68
68
  /**
69
69
  * Upload a zipped repository snapshot to generate parse tree relationships.
70
70
  * Parse graph
71
71
  */
72
- generateParseGraphRaw(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelope>>;
72
+ generateParseGraphRaw(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelopeAsync>>;
73
73
  /**
74
74
  * Upload a zipped repository snapshot to generate parse tree relationships.
75
75
  * Parse graph
76
76
  */
77
- generateParseGraph(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelope>;
77
+ generateParseGraph(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
78
78
  /**
79
79
  * Upload a zipped repository snapshot to generate the Supermodel Intermediate Representation (SIR) artifact bundle.
80
80
  * Supermodel graph
81
81
  */
82
- generateSupermodelGraphRaw(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SupermodelIR>>;
82
+ generateSupermodelGraphRaw(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SupermodelIRAsync>>;
83
83
  /**
84
84
  * Upload a zipped repository snapshot to generate the Supermodel Intermediate Representation (SIR) artifact bundle.
85
85
  * Supermodel graph
86
86
  */
87
- generateSupermodelGraph(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SupermodelIR>;
87
+ generateSupermodelGraph(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SupermodelIRAsync>;
88
88
  }
@@ -5,7 +5,7 @@
5
5
  * Supermodel
6
6
  * Code Graphing & Analysis API
7
7
  *
8
- * The version of the OpenAPI document: 0.5.3
8
+ * The version of the OpenAPI document: 0.6.0
9
9
  *
10
10
  *
11
11
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -74,7 +74,7 @@ class DefaultApi extends runtime.BaseAPI {
74
74
  query: queryParameters,
75
75
  body: formParams,
76
76
  }, initOverrides);
77
- return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CodeGraphEnvelopeFromJSON)(jsonValue));
77
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CodeGraphEnvelopeAsyncFromJSON)(jsonValue));
78
78
  });
79
79
  }
80
80
  /**
@@ -132,7 +132,7 @@ class DefaultApi extends runtime.BaseAPI {
132
132
  query: queryParameters,
133
133
  body: formParams,
134
134
  }, initOverrides);
135
- return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CodeGraphEnvelopeFromJSON)(jsonValue));
135
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CodeGraphEnvelopeAsyncFromJSON)(jsonValue));
136
136
  });
137
137
  }
138
138
  /**
@@ -190,7 +190,7 @@ class DefaultApi extends runtime.BaseAPI {
190
190
  query: queryParameters,
191
191
  body: formParams,
192
192
  }, initOverrides);
193
- return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.DomainClassificationResponseFromJSON)(jsonValue));
193
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.DomainClassificationResponseAsyncFromJSON)(jsonValue));
194
194
  });
195
195
  }
196
196
  /**
@@ -248,7 +248,7 @@ class DefaultApi extends runtime.BaseAPI {
248
248
  query: queryParameters,
249
249
  body: formParams,
250
250
  }, initOverrides);
251
- return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CodeGraphEnvelopeFromJSON)(jsonValue));
251
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.CodeGraphEnvelopeAsyncFromJSON)(jsonValue));
252
252
  });
253
253
  }
254
254
  /**
@@ -306,7 +306,7 @@ class DefaultApi extends runtime.BaseAPI {
306
306
  query: queryParameters,
307
307
  body: formParams,
308
308
  }, initOverrides);
309
- return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.SupermodelIRFromJSON)(jsonValue));
309
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.SupermodelIRAsyncFromJSON)(jsonValue));
310
310
  });
311
311
  }
312
312
  /**
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Async Client Wrapper for Supermodel API
3
+ *
4
+ * Provides automatic polling for async job endpoints, so you can use them
5
+ * like synchronous APIs without manually implementing polling loops.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { DefaultApi, Configuration, SupermodelClient } from '@supermodeltools/sdk';
10
+ *
11
+ * const api = new DefaultApi(new Configuration({
12
+ * basePath: 'https://api.supermodel.tools',
13
+ * apiKey: () => 'your-api-key'
14
+ * }));
15
+ *
16
+ * const client = new SupermodelClient(api);
17
+ *
18
+ * // Returns the unwrapped result - polling is automatic!
19
+ * const graph = await client.generateDependencyGraph(zipFile);
20
+ * console.log(graph.graph.nodes.length);
21
+ * ```
22
+ */
23
+ import type { InitOverrideFunction } from './runtime';
24
+ import type { DefaultApi } from './apis/DefaultApi';
25
+ import type { CodeGraphEnvelope, DomainClassificationResponse, SupermodelIR } from './models';
26
+ /**
27
+ * Configuration options for the async client.
28
+ */
29
+ export interface AsyncClientOptions {
30
+ /**
31
+ * Maximum time to wait for a job to complete (in milliseconds).
32
+ * Default: 300000 (5 minutes)
33
+ */
34
+ timeoutMs?: number;
35
+ /**
36
+ * Default retry interval when server doesn't specify (in milliseconds).
37
+ * Default: 5000 (5 seconds)
38
+ */
39
+ defaultRetryIntervalMs?: number;
40
+ /**
41
+ * Maximum number of polling attempts.
42
+ * Default: 60
43
+ */
44
+ maxPollingAttempts?: number;
45
+ /**
46
+ * Callback for polling progress updates.
47
+ * Useful for showing progress indicators in UIs.
48
+ */
49
+ onPollingProgress?: (status: PollingProgress) => void;
50
+ /**
51
+ * Function to generate idempotency keys.
52
+ * Default: crypto.randomUUID() or fallback
53
+ */
54
+ generateIdempotencyKey?: () => string;
55
+ /**
56
+ * AbortSignal for cancelling the polling operation.
57
+ * When aborted, throws an AbortError.
58
+ */
59
+ signal?: AbortSignal;
60
+ }
61
+ /**
62
+ * Polling progress information passed to onPollingProgress callback.
63
+ */
64
+ export interface PollingProgress {
65
+ jobId: string;
66
+ status: string;
67
+ attempt: number;
68
+ maxAttempts: number;
69
+ elapsedMs: number;
70
+ nextRetryMs?: number;
71
+ }
72
+ /**
73
+ * Options for individual graph generation requests.
74
+ */
75
+ export interface GraphRequestOptions {
76
+ /**
77
+ * Idempotency key for the request (auto-generated if not provided).
78
+ */
79
+ idempotencyKey?: string;
80
+ /**
81
+ * Optional fetch init overrides (e.g., for API key auth headers).
82
+ */
83
+ initOverrides?: RequestInit | InitOverrideFunction;
84
+ /**
85
+ * AbortSignal for cancelling this specific request.
86
+ * Overrides the signal set at client construction.
87
+ */
88
+ signal?: AbortSignal;
89
+ }
90
+ /**
91
+ * Error thrown when a job fails.
92
+ */
93
+ export declare class JobFailedError extends Error {
94
+ readonly jobId: string;
95
+ readonly errorMessage: string;
96
+ constructor(jobId: string, errorMessage: string);
97
+ }
98
+ /**
99
+ * Error thrown when polling times out.
100
+ */
101
+ export declare class PollingTimeoutError extends Error {
102
+ readonly jobId: string;
103
+ readonly timeoutMs: number;
104
+ readonly attempts: number;
105
+ constructor(jobId: string, timeoutMs: number, attempts: number);
106
+ }
107
+ /**
108
+ * Async client wrapper that handles polling automatically.
109
+ *
110
+ * Wraps the generated DefaultApi and provides simplified methods
111
+ * for graph generation that handle async job polling internally.
112
+ */
113
+ export declare class SupermodelClient {
114
+ private api;
115
+ private options;
116
+ private generateIdempotencyKey;
117
+ constructor(api: DefaultApi, options?: AsyncClientOptions);
118
+ /**
119
+ * Generate a dependency graph from a zip file.
120
+ * Automatically handles polling until the job completes.
121
+ *
122
+ * @param file - Zip file containing the repository
123
+ * @param options - Optional request options
124
+ * @returns The dependency graph result
125
+ */
126
+ generateDependencyGraph(file: Blob, options?: GraphRequestOptions): Promise<CodeGraphEnvelope>;
127
+ /**
128
+ * Generate a call graph from a zip file.
129
+ * Automatically handles polling until the job completes.
130
+ */
131
+ generateCallGraph(file: Blob, options?: GraphRequestOptions): Promise<CodeGraphEnvelope>;
132
+ /**
133
+ * Generate a domain graph from a zip file.
134
+ * Automatically handles polling until the job completes.
135
+ */
136
+ generateDomainGraph(file: Blob, options?: GraphRequestOptions): Promise<DomainClassificationResponse>;
137
+ /**
138
+ * Generate a parse graph from a zip file.
139
+ * Automatically handles polling until the job completes.
140
+ */
141
+ generateParseGraph(file: Blob, options?: GraphRequestOptions): Promise<CodeGraphEnvelope>;
142
+ /**
143
+ * Generate a Supermodel IR from a zip file.
144
+ * Automatically handles polling until the job completes.
145
+ */
146
+ generateSupermodelGraph(file: Blob, options?: GraphRequestOptions): Promise<SupermodelIR>;
147
+ /**
148
+ * Access the underlying raw API for methods that don't need polling
149
+ * or when you want direct control over the async envelope responses.
150
+ */
151
+ get rawApi(): DefaultApi;
152
+ }
package/dist/async.js ADDED
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * Async Client Wrapper for Supermodel API
4
+ *
5
+ * Provides automatic polling for async job endpoints, so you can use them
6
+ * like synchronous APIs without manually implementing polling loops.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { DefaultApi, Configuration, SupermodelClient } from '@supermodeltools/sdk';
11
+ *
12
+ * const api = new DefaultApi(new Configuration({
13
+ * basePath: 'https://api.supermodel.tools',
14
+ * apiKey: () => 'your-api-key'
15
+ * }));
16
+ *
17
+ * const client = new SupermodelClient(api);
18
+ *
19
+ * // Returns the unwrapped result - polling is automatic!
20
+ * const graph = await client.generateDependencyGraph(zipFile);
21
+ * console.log(graph.graph.nodes.length);
22
+ * ```
23
+ */
24
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
25
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
26
+ return new (P || (P = Promise))(function (resolve, reject) {
27
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
28
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
29
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
30
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
31
+ });
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.SupermodelClient = exports.PollingTimeoutError = exports.JobFailedError = void 0;
35
+ /**
36
+ * Error thrown when a job fails.
37
+ */
38
+ class JobFailedError extends Error {
39
+ constructor(jobId, errorMessage) {
40
+ super(`Job ${jobId} failed: ${errorMessage}`);
41
+ this.jobId = jobId;
42
+ this.errorMessage = errorMessage;
43
+ this.name = 'JobFailedError';
44
+ }
45
+ }
46
+ exports.JobFailedError = JobFailedError;
47
+ /**
48
+ * Error thrown when polling times out.
49
+ */
50
+ class PollingTimeoutError extends Error {
51
+ constructor(jobId, timeoutMs, attempts) {
52
+ super(`Polling timed out for job ${jobId} after ${timeoutMs}ms (${attempts} attempts)`);
53
+ this.jobId = jobId;
54
+ this.timeoutMs = timeoutMs;
55
+ this.attempts = attempts;
56
+ this.name = 'PollingTimeoutError';
57
+ }
58
+ }
59
+ exports.PollingTimeoutError = PollingTimeoutError;
60
+ /**
61
+ * Default idempotency key generator.
62
+ */
63
+ function defaultGenerateIdempotencyKey() {
64
+ if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
65
+ return crypto.randomUUID();
66
+ }
67
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
68
+ const r = (Math.random() * 16) | 0;
69
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
70
+ return v.toString(16);
71
+ });
72
+ }
73
+ function sleep(ms) {
74
+ return new Promise((resolve) => setTimeout(resolve, ms));
75
+ }
76
+ function sleepWithAbort(ms, signal) {
77
+ return new Promise((resolve, reject) => {
78
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
79
+ const error = new Error('Polling aborted');
80
+ error.name = 'AbortError';
81
+ reject(error);
82
+ return;
83
+ }
84
+ const timeout = setTimeout(() => {
85
+ if (signal && onAbort) {
86
+ signal.removeEventListener('abort', onAbort);
87
+ }
88
+ resolve();
89
+ }, ms);
90
+ let onAbort;
91
+ if (signal) {
92
+ onAbort = () => {
93
+ clearTimeout(timeout);
94
+ signal.removeEventListener('abort', onAbort);
95
+ const error = new Error('Polling aborted');
96
+ error.name = 'AbortError';
97
+ reject(error);
98
+ };
99
+ signal.addEventListener('abort', onAbort);
100
+ }
101
+ });
102
+ }
103
+ /**
104
+ * Poll an async endpoint until completion.
105
+ */
106
+ function pollUntilComplete(apiCall, options) {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ const { timeoutMs = 300000, defaultRetryIntervalMs = 5000, maxPollingAttempts = 60, onPollingProgress, signal, } = options;
109
+ const startTime = Date.now();
110
+ let attempt = 0;
111
+ let jobId = '';
112
+ while (attempt < maxPollingAttempts) {
113
+ // Check for abort before each attempt
114
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
115
+ const error = new Error('Polling aborted');
116
+ error.name = 'AbortError';
117
+ throw error;
118
+ }
119
+ attempt++;
120
+ const elapsedMs = Date.now() - startTime;
121
+ if (elapsedMs >= timeoutMs) {
122
+ throw new PollingTimeoutError(jobId || 'unknown', timeoutMs, attempt);
123
+ }
124
+ const response = yield apiCall();
125
+ jobId = response.jobId;
126
+ const status = response.status;
127
+ if (onPollingProgress) {
128
+ const nextRetryMs = status === 'completed' || status === 'failed'
129
+ ? undefined
130
+ : (response.retryAfter || defaultRetryIntervalMs / 1000) * 1000;
131
+ onPollingProgress({
132
+ jobId,
133
+ status,
134
+ attempt,
135
+ maxAttempts: maxPollingAttempts,
136
+ elapsedMs,
137
+ nextRetryMs,
138
+ });
139
+ }
140
+ if (status === 'completed') {
141
+ if (response.result !== undefined) {
142
+ return response.result;
143
+ }
144
+ throw new Error(`Job ${jobId} completed but result is undefined`);
145
+ }
146
+ if (status === 'failed') {
147
+ throw new JobFailedError(jobId, response.error || 'Unknown error');
148
+ }
149
+ const retryAfterMs = (response.retryAfter || defaultRetryIntervalMs / 1000) * 1000;
150
+ // Use abortable sleep
151
+ yield sleepWithAbort(retryAfterMs, signal);
152
+ }
153
+ throw new PollingTimeoutError(jobId || 'unknown', timeoutMs, attempt);
154
+ });
155
+ }
156
+ /**
157
+ * Async client wrapper that handles polling automatically.
158
+ *
159
+ * Wraps the generated DefaultApi and provides simplified methods
160
+ * for graph generation that handle async job polling internally.
161
+ */
162
+ class SupermodelClient {
163
+ constructor(api, options = {}) {
164
+ this.api = api;
165
+ this.options = options;
166
+ this.generateIdempotencyKey = options.generateIdempotencyKey || defaultGenerateIdempotencyKey;
167
+ }
168
+ /**
169
+ * Generate a dependency graph from a zip file.
170
+ * Automatically handles polling until the job completes.
171
+ *
172
+ * @param file - Zip file containing the repository
173
+ * @param options - Optional request options
174
+ * @returns The dependency graph result
175
+ */
176
+ generateDependencyGraph(file, options) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ const key = (options === null || options === void 0 ? void 0 : options.idempotencyKey) || this.generateIdempotencyKey();
179
+ const pollOptions = (options === null || options === void 0 ? void 0 : options.signal) ? Object.assign(Object.assign({}, this.options), { signal: options.signal }) : this.options;
180
+ return pollUntilComplete(() => this.api.generateDependencyGraph({ idempotencyKey: key, file }, options === null || options === void 0 ? void 0 : options.initOverrides), pollOptions);
181
+ });
182
+ }
183
+ /**
184
+ * Generate a call graph from a zip file.
185
+ * Automatically handles polling until the job completes.
186
+ */
187
+ generateCallGraph(file, options) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ const key = (options === null || options === void 0 ? void 0 : options.idempotencyKey) || this.generateIdempotencyKey();
190
+ const pollOptions = (options === null || options === void 0 ? void 0 : options.signal) ? Object.assign(Object.assign({}, this.options), { signal: options.signal }) : this.options;
191
+ return pollUntilComplete(() => this.api.generateCallGraph({ idempotencyKey: key, file }, options === null || options === void 0 ? void 0 : options.initOverrides), pollOptions);
192
+ });
193
+ }
194
+ /**
195
+ * Generate a domain graph from a zip file.
196
+ * Automatically handles polling until the job completes.
197
+ */
198
+ generateDomainGraph(file, options) {
199
+ return __awaiter(this, void 0, void 0, function* () {
200
+ const key = (options === null || options === void 0 ? void 0 : options.idempotencyKey) || this.generateIdempotencyKey();
201
+ const pollOptions = (options === null || options === void 0 ? void 0 : options.signal) ? Object.assign(Object.assign({}, this.options), { signal: options.signal }) : this.options;
202
+ return pollUntilComplete(() => this.api.generateDomainGraph({ idempotencyKey: key, file }, options === null || options === void 0 ? void 0 : options.initOverrides), pollOptions);
203
+ });
204
+ }
205
+ /**
206
+ * Generate a parse graph from a zip file.
207
+ * Automatically handles polling until the job completes.
208
+ */
209
+ generateParseGraph(file, options) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ const key = (options === null || options === void 0 ? void 0 : options.idempotencyKey) || this.generateIdempotencyKey();
212
+ const pollOptions = (options === null || options === void 0 ? void 0 : options.signal) ? Object.assign(Object.assign({}, this.options), { signal: options.signal }) : this.options;
213
+ return pollUntilComplete(() => this.api.generateParseGraph({ idempotencyKey: key, file }, options === null || options === void 0 ? void 0 : options.initOverrides), pollOptions);
214
+ });
215
+ }
216
+ /**
217
+ * Generate a Supermodel IR from a zip file.
218
+ * Automatically handles polling until the job completes.
219
+ */
220
+ generateSupermodelGraph(file, options) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ const key = (options === null || options === void 0 ? void 0 : options.idempotencyKey) || this.generateIdempotencyKey();
223
+ const pollOptions = (options === null || options === void 0 ? void 0 : options.signal) ? Object.assign(Object.assign({}, this.options), { signal: options.signal }) : this.options;
224
+ return pollUntilComplete(() => this.api.generateSupermodelGraph({ idempotencyKey: key, file }, options === null || options === void 0 ? void 0 : options.initOverrides), pollOptions);
225
+ });
226
+ }
227
+ /**
228
+ * Access the underlying raw API for methods that don't need polling
229
+ * or when you want direct control over the async envelope responses.
230
+ */
231
+ get rawApi() {
232
+ return this.api;
233
+ }
234
+ }
235
+ exports.SupermodelClient = SupermodelClient;
@@ -2,7 +2,7 @@
2
2
  * Supermodel
3
3
  * Code Graphing & Analysis API
4
4
  *
5
- * The version of the OpenAPI document: 0.5.3
5
+ * The version of the OpenAPI document: 0.6.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime';
13
- import type { CodeGraphEnvelope, DomainClassificationResponse, SupermodelIR } from '../models/index';
13
+ import type { CodeGraphEnvelopeAsync, DomainClassificationResponseAsync, SupermodelIRAsync } from '../models/index';
14
14
  export interface GenerateCallGraphRequest {
15
15
  idempotencyKey: string;
16
16
  file: Blob;
@@ -39,50 +39,50 @@ export declare class DefaultApi extends runtime.BaseAPI {
39
39
  * Upload a zipped repository snapshot to generate the function-level call graph.
40
40
  * Call graph
41
41
  */
42
- generateCallGraphRaw(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelope>>;
42
+ generateCallGraphRaw(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelopeAsync>>;
43
43
  /**
44
44
  * Upload a zipped repository snapshot to generate the function-level call graph.
45
45
  * Call graph
46
46
  */
47
- generateCallGraph(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelope>;
47
+ generateCallGraph(requestParameters: GenerateCallGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
48
48
  /**
49
49
  * Upload a zipped repository snapshot to generate the dependency graph.
50
50
  * Dependency graph
51
51
  */
52
- generateDependencyGraphRaw(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelope>>;
52
+ generateDependencyGraphRaw(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelopeAsync>>;
53
53
  /**
54
54
  * Upload a zipped repository snapshot to generate the dependency graph.
55
55
  * Dependency graph
56
56
  */
57
- generateDependencyGraph(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelope>;
57
+ generateDependencyGraph(requestParameters: GenerateDependencyGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
58
58
  /**
59
59
  * Upload a zipped repository snapshot to generate the domain model graph.
60
60
  * Domain graph
61
61
  */
62
- generateDomainGraphRaw(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DomainClassificationResponse>>;
62
+ generateDomainGraphRaw(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DomainClassificationResponseAsync>>;
63
63
  /**
64
64
  * Upload a zipped repository snapshot to generate the domain model graph.
65
65
  * Domain graph
66
66
  */
67
- generateDomainGraph(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DomainClassificationResponse>;
67
+ generateDomainGraph(requestParameters: GenerateDomainGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DomainClassificationResponseAsync>;
68
68
  /**
69
69
  * Upload a zipped repository snapshot to generate parse tree relationships.
70
70
  * Parse graph
71
71
  */
72
- generateParseGraphRaw(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelope>>;
72
+ generateParseGraphRaw(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeGraphEnvelopeAsync>>;
73
73
  /**
74
74
  * Upload a zipped repository snapshot to generate parse tree relationships.
75
75
  * Parse graph
76
76
  */
77
- generateParseGraph(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelope>;
77
+ generateParseGraph(requestParameters: GenerateParseGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeGraphEnvelopeAsync>;
78
78
  /**
79
79
  * Upload a zipped repository snapshot to generate the Supermodel Intermediate Representation (SIR) artifact bundle.
80
80
  * Supermodel graph
81
81
  */
82
- generateSupermodelGraphRaw(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SupermodelIR>>;
82
+ generateSupermodelGraphRaw(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SupermodelIRAsync>>;
83
83
  /**
84
84
  * Upload a zipped repository snapshot to generate the Supermodel Intermediate Representation (SIR) artifact bundle.
85
85
  * Supermodel graph
86
86
  */
87
- generateSupermodelGraph(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SupermodelIR>;
87
+ generateSupermodelGraph(requestParameters: GenerateSupermodelGraphRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SupermodelIRAsync>;
88
88
  }
@@ -4,7 +4,7 @@
4
4
  * Supermodel
5
5
  * Code Graphing & Analysis API
6
6
  *
7
- * The version of the OpenAPI document: 0.5.3
7
+ * The version of the OpenAPI document: 0.6.0
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 { CodeGraphEnvelopeFromJSON, DomainClassificationResponseFromJSON, SupermodelIRFromJSON, } from '../models/index';
24
+ import { CodeGraphEnvelopeAsyncFromJSON, DomainClassificationResponseAsyncFromJSON, SupermodelIRAsyncFromJSON, } from '../models/index';
25
25
  /**
26
26
  *
27
27
  */
@@ -71,7 +71,7 @@ export class DefaultApi extends runtime.BaseAPI {
71
71
  query: queryParameters,
72
72
  body: formParams,
73
73
  }, initOverrides);
74
- return new runtime.JSONApiResponse(response, (jsonValue) => CodeGraphEnvelopeFromJSON(jsonValue));
74
+ return new runtime.JSONApiResponse(response, (jsonValue) => CodeGraphEnvelopeAsyncFromJSON(jsonValue));
75
75
  });
76
76
  }
77
77
  /**
@@ -129,7 +129,7 @@ export class DefaultApi extends runtime.BaseAPI {
129
129
  query: queryParameters,
130
130
  body: formParams,
131
131
  }, initOverrides);
132
- return new runtime.JSONApiResponse(response, (jsonValue) => CodeGraphEnvelopeFromJSON(jsonValue));
132
+ return new runtime.JSONApiResponse(response, (jsonValue) => CodeGraphEnvelopeAsyncFromJSON(jsonValue));
133
133
  });
134
134
  }
135
135
  /**
@@ -187,7 +187,7 @@ export class DefaultApi extends runtime.BaseAPI {
187
187
  query: queryParameters,
188
188
  body: formParams,
189
189
  }, initOverrides);
190
- return new runtime.JSONApiResponse(response, (jsonValue) => DomainClassificationResponseFromJSON(jsonValue));
190
+ return new runtime.JSONApiResponse(response, (jsonValue) => DomainClassificationResponseAsyncFromJSON(jsonValue));
191
191
  });
192
192
  }
193
193
  /**
@@ -245,7 +245,7 @@ export class DefaultApi extends runtime.BaseAPI {
245
245
  query: queryParameters,
246
246
  body: formParams,
247
247
  }, initOverrides);
248
- return new runtime.JSONApiResponse(response, (jsonValue) => CodeGraphEnvelopeFromJSON(jsonValue));
248
+ return new runtime.JSONApiResponse(response, (jsonValue) => CodeGraphEnvelopeAsyncFromJSON(jsonValue));
249
249
  });
250
250
  }
251
251
  /**
@@ -303,7 +303,7 @@ export class DefaultApi extends runtime.BaseAPI {
303
303
  query: queryParameters,
304
304
  body: formParams,
305
305
  }, initOverrides);
306
- return new runtime.JSONApiResponse(response, (jsonValue) => SupermodelIRFromJSON(jsonValue));
306
+ return new runtime.JSONApiResponse(response, (jsonValue) => SupermodelIRAsyncFromJSON(jsonValue));
307
307
  });
308
308
  }
309
309
  /**