apcore-toolkit 0.1.0 → 0.3.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 (55) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +29 -1
  3. package/dist/ai-enhancer.d.ts +43 -0
  4. package/dist/ai-enhancer.d.ts.map +1 -0
  5. package/dist/ai-enhancer.js +313 -0
  6. package/dist/ai-enhancer.js.map +1 -0
  7. package/dist/flatten-params.d.ts +16 -0
  8. package/dist/flatten-params.d.ts.map +1 -0
  9. package/dist/flatten-params.js +18 -0
  10. package/dist/flatten-params.js.map +1 -0
  11. package/dist/index.d.ts +8 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +6 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/openapi.d.ts +7 -0
  16. package/dist/openapi.d.ts.map +1 -1
  17. package/dist/openapi.js +49 -8
  18. package/dist/openapi.js.map +1 -1
  19. package/dist/output/errors.d.ts +6 -0
  20. package/dist/output/errors.d.ts.map +1 -0
  21. package/dist/output/errors.js +11 -0
  22. package/dist/output/errors.js.map +1 -0
  23. package/dist/output/index.d.ts +4 -0
  24. package/dist/output/index.d.ts.map +1 -1
  25. package/dist/output/index.js +3 -0
  26. package/dist/output/index.js.map +1 -1
  27. package/dist/output/registry-writer.d.ts +5 -1
  28. package/dist/output/registry-writer.d.ts.map +1 -1
  29. package/dist/output/registry-writer.js +21 -4
  30. package/dist/output/registry-writer.js.map +1 -1
  31. package/dist/output/types.d.ts +15 -0
  32. package/dist/output/types.d.ts.map +1 -0
  33. package/dist/output/types.js +4 -0
  34. package/dist/output/types.js.map +1 -0
  35. package/dist/output/typescript-writer.d.ts +4 -1
  36. package/dist/output/typescript-writer.d.ts.map +1 -1
  37. package/dist/output/typescript-writer.js +36 -10
  38. package/dist/output/typescript-writer.js.map +1 -1
  39. package/dist/output/verifiers.d.ts +26 -0
  40. package/dist/output/verifiers.d.ts.map +1 -0
  41. package/dist/output/verifiers.js +103 -0
  42. package/dist/output/verifiers.js.map +1 -0
  43. package/dist/output/yaml-writer.d.ts +4 -1
  44. package/dist/output/yaml-writer.d.ts.map +1 -1
  45. package/dist/output/yaml-writer.js +48 -23
  46. package/dist/output/yaml-writer.js.map +1 -1
  47. package/dist/resolve-target.d.ts +7 -1
  48. package/dist/resolve-target.d.ts.map +1 -1
  49. package/dist/resolve-target.js +17 -1
  50. package/dist/resolve-target.js.map +1 -1
  51. package/dist/scanner.d.ts +5 -0
  52. package/dist/scanner.d.ts.map +1 -1
  53. package/dist/scanner.js +50 -5
  54. package/dist/scanner.js.map +1 -1
  55. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,73 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.3.0] - 2026-03-19
4
+
5
+ ### Added
6
+
7
+ - `deepResolveRefs()` — recursive `$ref` resolution for nested OpenAPI schemas,
8
+ handling `allOf`/`anyOf`/`oneOf`, `items`, and `properties`. Depth-limited to 16
9
+ levels to prevent infinite recursion on circular references. Exported from
10
+ package index for downstream use.
11
+ - `Enhancer` interface — pluggable contract for metadata enhancement, allowing
12
+ custom enhancers beyond the built-in `AIEnhancer`.
13
+
14
+ ### Fixed
15
+
16
+ - `extractOutputSchema()` — now recursively resolves all nested `$ref` pointers
17
+ via `deepResolveRefs` (previously only handled the shallow case of array items
18
+ with `$ref`).
19
+ - `extractInputSchema()` — now recursively resolves `$ref` inside individual
20
+ properties after assembly (was missing entirely).
21
+ - `WriteError.cause` — explicit typed `override readonly cause: Error` property,
22
+ narrowing from the base `unknown` type.
23
+
24
+ ### Tests
25
+
26
+ - 182 tests (up from 171), all passing
27
+ - Added `deepResolveRefs` test suite (8 tests): top-level ref, nested properties,
28
+ allOf/anyOf, array items, deeply nested refs, circular ref depth limit,
29
+ immutability guarantee
30
+ - Added nested `$ref` tests for `extractInputSchema` and `extractOutputSchema`
31
+ - Shared `OPENAPI_DOC` fixture with rich schema graph for all openapi tests
32
+
33
+ ---
34
+
35
+ ## [0.2.0] - 2026-03-12
36
+
37
+ ### Added
38
+
39
+ - `AIEnhancer` class — SLM-based metadata enhancement using OpenAI-compatible
40
+ APIs (Ollama, vLLM, LM Studio). Fills missing descriptions, infers behavioral
41
+ annotations (all 11 fields: `readonly`, `destructive`, `idempotent`,
42
+ `requires_approval`, `open_world`, `streaming`, `cacheable`, `cache_ttl`,
43
+ `cache_key_fields`, `paginated`, `pagination_style`), and generates input
44
+ schemas. AI-generated fields tagged with `x-generated-by: slm` for auditability.
45
+ - `createWriteResult()` factory and `runVerifierChain()` helper for writer operations.
46
+ `verify: true` runs the built-in verifier (`YAMLVerifier`, `SyntaxVerifier`,
47
+ `RegistryVerifier`) even when no custom `verifiers` are provided.
48
+ - `allowedPrefixes` parameter on `resolveTarget()` for path restriction security
49
+
50
+ ### Fixed
51
+
52
+ - `inferAnnotationsFromMethod()` — `GET` now infers `cacheable: true` in addition
53
+ to `readonly: true`, matching Python parity
54
+ - `filterModules()` — use `safeRegExp()` that tries regex first and falls back
55
+ to escaped literal on invalid patterns (balances spec compliance with safety)
56
+ - `YAMLWriter._buildBinding()` — use `structuredClone()` for deep cloning nested
57
+ schemas instead of shallow spread
58
+ - `WriteError` — use native ES2022 `Error.cause` instead of shadowing the property
59
+ - `JSONVerifier` — restored `schema` constructor parameter for cross-language
60
+ API parity with Python SDK
61
+
62
+ ### Tests
63
+
64
+ - 171 tests across 14 files, all passing
65
+ - Added `RegistryVerifier` test coverage (pass, fail, missing method)
66
+ - Added `resolveTarget` allowedPrefixes tests
67
+ - Full AIEnhancer test suite (15 tests)
68
+
69
+ ---
70
+
3
71
  ## [0.1.0] - 2026-03-07
4
72
 
5
73
  ### Added
package/README.md CHANGED
@@ -12,6 +12,15 @@ Shared scanner, schema extraction, and output toolkit for apcore framework adapt
12
12
  npm install apcore-toolkit
13
13
  ```
14
14
 
15
+ ## Features
16
+
17
+ - Abstract `BaseScanner` for framework-specific endpoint scanning
18
+ - OpenAPI schema extraction (`extractInputSchema`, `extractOutputSchema`)
19
+ - Multi-format output writers (YAML, TypeScript, Registry) with pluggable verification
20
+ - Markdown formatting with depth control and table heuristics
21
+ - Module serialization utilities
22
+ - `flattenParams` for Zod-based parameter flattening
23
+
15
24
  ## Usage
16
25
 
17
26
  ### ScannedModule
@@ -120,15 +129,34 @@ const dicts = modulesToDicts(modules); // batch conversion
120
129
  | `extractInputSchema()` | Extract input schema from OpenAPI operation |
121
130
  | `extractOutputSchema()` | Extract output schema from OpenAPI operation |
122
131
  | `resolveRef()` | Resolve `$ref` in OpenAPI documents |
123
- | `resolveSchema()` | Resolve schema with `$ref` support |
132
+ | `resolveSchema()` | Resolve schema with single-level `$ref` support |
133
+ | `deepResolveRefs()` | Recursively resolve all nested `$ref` pointers in a schema |
124
134
  | `enrichSchemaDescriptions()` | Merge parameter descriptions into schema |
125
135
  | `toMarkdown()` | Convert dict to formatted Markdown |
126
136
  | `moduleToDict()` | Serialize module to snake_case dict |
127
137
  | `modulesToDicts()` | Batch serialize modules |
128
138
  | `annotationsToDict()` | Convert annotations to plain dict |
129
139
  | `resolveTarget()` | Dynamic import + named export resolution |
140
+ | `flattenParams()` | Flatten Zod schema params into keyword args |
141
+ | `WriteResult` | Structured result type for writer operations |
142
+ | `Verifier` | Interface for pluggable output verification |
143
+ | `VerifyResult` | Result type for verification operations |
144
+ | `WriteError` | Error class for I/O failures during write |
145
+ | `YAMLVerifier` | Verifies YAML binding file structure |
146
+ | `SyntaxVerifier` | Verifies file is non-empty and readable |
147
+ | `RegistryVerifier` | Verifies module registered in registry |
148
+ | `MagicBytesVerifier` | Verifies file header matches expected bytes |
149
+ | `JSONVerifier` | Verifies valid JSON, optional schema check |
150
+ | `createWriteResult()` | Factory for WriteResult with defaults |
151
+ | `runVerifierChain()` | Run verifier chain, short-circuit on first failure |
152
+ | `Enhancer` | Pluggable interface for metadata enhancement |
153
+ | `AIEnhancer` | SLM-based metadata enhancement for scanned modules |
130
154
  | `VERSION` | Package version string |
131
155
 
156
+ ## Documentation
157
+
158
+ See the [apcore-toolkit documentation](https://github.com/aipartnerup/apcore-toolkit) for full API reference and guides.
159
+
132
160
  ## License
133
161
 
134
162
  Apache-2.0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * AI-driven metadata enhancement using local SLMs.
3
+ *
4
+ * Uses an OpenAI-compatible local API (e.g., Ollama, vLLM, LM Studio) to fill
5
+ * metadata gaps that static analysis cannot resolve: missing descriptions,
6
+ * behavioral annotation inference, and schema inference for untyped functions.
7
+ *
8
+ * All AI-generated fields are tagged with `x-generated-by: slm` in the module's
9
+ * metadata dict for auditability.
10
+ */
11
+ import type { ScannedModule } from './types.js';
12
+ /**
13
+ * Protocol for pluggable metadata enhancement.
14
+ *
15
+ * Any class implementing this interface can be used to fill metadata gaps
16
+ * in scanned modules. See the AI Enhancement Guide for details.
17
+ */
18
+ export interface Enhancer {
19
+ enhance(modules: ScannedModule[]): Promise<ScannedModule[]>;
20
+ }
21
+ export interface AIEnhancerOptions {
22
+ endpoint?: string;
23
+ model?: string;
24
+ threshold?: number;
25
+ batchSize?: number;
26
+ timeout?: number;
27
+ }
28
+ export declare class AIEnhancer {
29
+ readonly endpoint: string;
30
+ readonly model: string;
31
+ readonly threshold: number;
32
+ readonly batchSize: number;
33
+ readonly timeout: number;
34
+ constructor(options?: AIEnhancerOptions);
35
+ static isEnabled(): boolean;
36
+ enhance(modules: ScannedModule[]): Promise<ScannedModule[]>;
37
+ private _identifyGaps;
38
+ private _enhanceModule;
39
+ private _buildPrompt;
40
+ private _callLLM;
41
+ static _parseResponse(response: string): Record<string, unknown>;
42
+ }
43
+ //# sourceMappingURL=ai-enhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-enhancer.d.ts","sourceRoot":"","sources":["../src/ai-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyBhD;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,CAAC,EAAE,iBAAiB;IAkBvC,MAAM,CAAC,SAAS,IAAI,OAAO;IAKrB,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA0BjE,OAAO,CAAC,aAAa;YAkBP,cAAc;IAkH5B,OAAO,CAAC,YAAY;YAkDN,QAAQ;IAuCtB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAcjE"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * AI-driven metadata enhancement using local SLMs.
3
+ *
4
+ * Uses an OpenAI-compatible local API (e.g., Ollama, vLLM, LM Studio) to fill
5
+ * metadata gaps that static analysis cannot resolve: missing descriptions,
6
+ * behavioral annotation inference, and schema inference for untyped functions.
7
+ *
8
+ * All AI-generated fields are tagged with `x-generated-by: slm` in the module's
9
+ * metadata dict for auditability.
10
+ */
11
+ import { DEFAULT_ANNOTATIONS } from 'apcore-js';
12
+ import { cloneModule } from './types.js';
13
+ const _DEFAULT_ENDPOINT = 'http://localhost:11434/v1';
14
+ const _DEFAULT_MODEL = 'qwen:0.6b';
15
+ const _DEFAULT_THRESHOLD = 0.7;
16
+ const _DEFAULT_BATCH_SIZE = 5;
17
+ const _DEFAULT_TIMEOUT = 30;
18
+ function parseFloatEnv(name, fallback) {
19
+ const raw = process.env[name];
20
+ if (raw == null)
21
+ return fallback;
22
+ const val = Number(raw);
23
+ if (Number.isNaN(val))
24
+ throw new Error(`${name} must be a valid number, got "${raw}"`);
25
+ return val;
26
+ }
27
+ function parseIntEnv(name, fallback) {
28
+ const raw = process.env[name];
29
+ if (raw == null)
30
+ return fallback;
31
+ const val = parseInt(raw, 10);
32
+ if (Number.isNaN(val))
33
+ throw new Error(`${name} must be a valid integer, got "${raw}"`);
34
+ return val;
35
+ }
36
+ export class AIEnhancer {
37
+ endpoint;
38
+ model;
39
+ threshold;
40
+ batchSize;
41
+ timeout;
42
+ constructor(options) {
43
+ this.endpoint = options?.endpoint ?? process.env.APCORE_AI_ENDPOINT ?? _DEFAULT_ENDPOINT;
44
+ this.model = options?.model ?? process.env.APCORE_AI_MODEL ?? _DEFAULT_MODEL;
45
+ this.threshold = options?.threshold ?? parseFloatEnv('APCORE_AI_THRESHOLD', _DEFAULT_THRESHOLD);
46
+ this.batchSize = options?.batchSize ?? parseIntEnv('APCORE_AI_BATCH_SIZE', _DEFAULT_BATCH_SIZE);
47
+ this.timeout = options?.timeout ?? parseIntEnv('APCORE_AI_TIMEOUT', _DEFAULT_TIMEOUT);
48
+ if (this.threshold < 0 || this.threshold > 1) {
49
+ throw new Error('APCORE_AI_THRESHOLD must be a number between 0.0 and 1.0');
50
+ }
51
+ if (this.batchSize <= 0) {
52
+ throw new Error('APCORE_AI_BATCH_SIZE must be a positive integer');
53
+ }
54
+ if (this.timeout <= 0) {
55
+ throw new Error('APCORE_AI_TIMEOUT must be a positive integer');
56
+ }
57
+ }
58
+ static isEnabled() {
59
+ const val = (process.env.APCORE_AI_ENABLED ?? 'false').toLowerCase();
60
+ return val === 'true' || val === '1' || val === 'yes';
61
+ }
62
+ async enhance(modules) {
63
+ const results = [...modules];
64
+ const pending = [];
65
+ for (let i = 0; i < modules.length; i++) {
66
+ const gaps = this._identifyGaps(modules[i]);
67
+ if (gaps.length > 0) {
68
+ pending.push({ idx: i, module: modules[i], gaps });
69
+ }
70
+ }
71
+ for (let batchStart = 0; batchStart < pending.length; batchStart += this.batchSize) {
72
+ const batch = pending.slice(batchStart, batchStart + this.batchSize);
73
+ for (const { idx, module, gaps } of batch) {
74
+ try {
75
+ const enhanced = await this._enhanceModule(module, gaps);
76
+ results[idx] = enhanced;
77
+ }
78
+ catch {
79
+ // AI enhancement failed — keep original
80
+ }
81
+ }
82
+ }
83
+ return results;
84
+ }
85
+ _identifyGaps(module) {
86
+ const gaps = [];
87
+ if (!module.description || module.description === module.moduleId) {
88
+ gaps.push('description');
89
+ }
90
+ if (!module.documentation) {
91
+ gaps.push('documentation');
92
+ }
93
+ if (module.annotations == null || JSON.stringify(module.annotations) === JSON.stringify(DEFAULT_ANNOTATIONS)) {
94
+ gaps.push('annotations');
95
+ }
96
+ const props = module.inputSchema.properties;
97
+ if (!props || (typeof props === 'object' && Object.keys(props).length === 0)) {
98
+ gaps.push('input_schema');
99
+ }
100
+ return gaps;
101
+ }
102
+ async _enhanceModule(module, gaps) {
103
+ const prompt = this._buildPrompt(module, gaps);
104
+ const response = await this._callLLM(prompt);
105
+ const parsed = AIEnhancer._parseResponse(response);
106
+ const updates = {};
107
+ const parsedConf = (parsed.confidence ?? {});
108
+ const confidence = {};
109
+ const warnings = [...module.warnings];
110
+ if (gaps.includes('description') && parsed.description) {
111
+ const conf = parsedConf.description ?? 0;
112
+ confidence.description = conf;
113
+ if (conf >= this.threshold) {
114
+ updates.description = parsed.description;
115
+ }
116
+ else {
117
+ warnings.push(`Low confidence (${conf.toFixed(2)}) for description — skipped. Review manually.`);
118
+ }
119
+ }
120
+ if (gaps.includes('documentation') && parsed.documentation) {
121
+ const conf = parsedConf.documentation ?? 0;
122
+ confidence.documentation = conf;
123
+ if (conf >= this.threshold) {
124
+ updates.documentation = parsed.documentation;
125
+ }
126
+ else {
127
+ warnings.push(`Low confidence (${conf.toFixed(2)}) for documentation — skipped. Review manually.`);
128
+ }
129
+ }
130
+ if (gaps.includes('annotations') && parsed.annotations && typeof parsed.annotations === 'object') {
131
+ const annData = parsed.annotations;
132
+ const accepted = {};
133
+ const boolFields = [
134
+ 'readonly', 'destructive', 'idempotent', 'requires_approval',
135
+ 'open_world', 'streaming', 'cacheable', 'paginated',
136
+ ];
137
+ for (const field of boolFields) {
138
+ if (typeof annData[field] === 'boolean') {
139
+ const fieldConf = parsedConf[`annotations.${field}`] ?? parsedConf[field] ?? 0;
140
+ confidence[`annotations.${field}`] = fieldConf;
141
+ if (fieldConf >= this.threshold) {
142
+ accepted[field] = annData[field];
143
+ }
144
+ else {
145
+ warnings.push(`Low confidence (${fieldConf.toFixed(2)}) for annotations.${field} — skipped. Review manually.`);
146
+ }
147
+ }
148
+ }
149
+ // Handle integer annotation fields
150
+ const intFields = ['cache_ttl'];
151
+ for (const field of intFields) {
152
+ if (typeof annData[field] === 'number') {
153
+ const fieldConf = parsedConf[`annotations.${field}`] ?? parsedConf[field] ?? 0;
154
+ confidence[`annotations.${field}`] = fieldConf;
155
+ if (fieldConf >= this.threshold) {
156
+ accepted[field] = annData[field];
157
+ }
158
+ else {
159
+ warnings.push(`Low confidence (${fieldConf.toFixed(2)}) for annotations.${field} — skipped. Review manually.`);
160
+ }
161
+ }
162
+ }
163
+ // Handle string annotation fields
164
+ const strFields = ['pagination_style'];
165
+ for (const field of strFields) {
166
+ if (typeof annData[field] === 'string') {
167
+ const fieldConf = parsedConf[`annotations.${field}`] ?? parsedConf[field] ?? 0;
168
+ confidence[`annotations.${field}`] = fieldConf;
169
+ if (fieldConf >= this.threshold) {
170
+ accepted[field] = annData[field];
171
+ }
172
+ else {
173
+ warnings.push(`Low confidence (${fieldConf.toFixed(2)}) for annotations.${field} — skipped. Review manually.`);
174
+ }
175
+ }
176
+ }
177
+ // Handle list annotation fields
178
+ if (Array.isArray(annData['cache_key_fields'])) {
179
+ const fieldConf = parsedConf['annotations.cache_key_fields'] ?? parsedConf['cache_key_fields'] ?? 0;
180
+ confidence['annotations.cache_key_fields'] = fieldConf;
181
+ if (fieldConf >= this.threshold) {
182
+ accepted['cache_key_fields'] = annData['cache_key_fields'];
183
+ }
184
+ else {
185
+ warnings.push(`Low confidence (${fieldConf.toFixed(2)}) for annotations.cache_key_fields — skipped. Review manually.`);
186
+ }
187
+ }
188
+ if (Object.keys(accepted).length > 0) {
189
+ const base = module.annotations ?? { ...DEFAULT_ANNOTATIONS };
190
+ updates.annotations = { ...base, ...accepted };
191
+ }
192
+ }
193
+ if (gaps.includes('input_schema') && parsed.input_schema) {
194
+ const conf = parsedConf.input_schema ?? 0;
195
+ confidence.input_schema = conf;
196
+ if (conf >= this.threshold) {
197
+ updates.inputSchema = parsed.input_schema;
198
+ }
199
+ else {
200
+ warnings.push(`Low confidence (${conf.toFixed(2)}) for input_schema — skipped. Review manually.`);
201
+ }
202
+ }
203
+ if (Object.keys(updates).length === 0) {
204
+ if (warnings.length !== module.warnings.length) {
205
+ return cloneModule(module, { warnings });
206
+ }
207
+ return module;
208
+ }
209
+ const metadata = { ...module.metadata };
210
+ metadata['x-generated-by'] = 'slm';
211
+ metadata['x-ai-confidence'] = confidence;
212
+ return cloneModule(module, { ...updates, metadata, warnings });
213
+ }
214
+ _buildPrompt(module, gaps) {
215
+ const parts = [
216
+ 'You are analyzing a function to generate metadata for an AI-perceivable module system.',
217
+ '',
218
+ `Module ID: ${module.moduleId}`,
219
+ `Target: ${module.target}`,
220
+ ];
221
+ if (module.description) {
222
+ parts.push(`Current description: ${module.description}`);
223
+ }
224
+ parts.push('');
225
+ parts.push('Please provide the following missing metadata as JSON:');
226
+ parts.push('{');
227
+ if (gaps.includes('description')) {
228
+ parts.push(' "description": "<≤200 chars, what this function does>",');
229
+ }
230
+ if (gaps.includes('documentation')) {
231
+ parts.push(' "documentation": "<detailed Markdown explanation>",');
232
+ }
233
+ if (gaps.includes('annotations')) {
234
+ parts.push(' "annotations": {');
235
+ parts.push(' "readonly": <true if no side effects>,');
236
+ parts.push(' "destructive": <true if deletes/overwrites data>,');
237
+ parts.push(' "idempotent": <true if safe to retry>,');
238
+ parts.push(' "requires_approval": <true if dangerous operation>,');
239
+ parts.push(' "open_world": <true if calls external systems>,');
240
+ parts.push(' "streaming": <true if yields results incrementally>,');
241
+ parts.push(' "cacheable": <true if results can be cached>,');
242
+ parts.push(' "cache_ttl": <seconds, 0 for no expiry>,');
243
+ parts.push(' "cache_key_fields": <list of input field names for cache key, or null for all>,');
244
+ parts.push(' "paginated": <true if supports pagination>,');
245
+ parts.push(' "pagination_style": <"cursor" or "offset" or "page">');
246
+ parts.push(' },');
247
+ }
248
+ if (gaps.includes('input_schema')) {
249
+ parts.push(' "input_schema": <JSON Schema object for function parameters>,');
250
+ }
251
+ parts.push(' "confidence": {');
252
+ parts.push(' "description": 0.0, "documentation": 0.0');
253
+ parts.push(' }');
254
+ parts.push('}');
255
+ parts.push('');
256
+ parts.push('Respond with ONLY valid JSON, no markdown fences or explanation.');
257
+ return parts.join('\n');
258
+ }
259
+ async _callLLM(prompt) {
260
+ const url = `${this.endpoint.replace(/\/+$/, '')}/chat/completions`;
261
+ const payload = JSON.stringify({
262
+ model: this.model,
263
+ messages: [{ role: 'user', content: prompt }],
264
+ temperature: 0.1,
265
+ });
266
+ const controller = new AbortController();
267
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout * 1000);
268
+ try {
269
+ const resp = await fetch(url, {
270
+ method: 'POST',
271
+ headers: { 'Content-Type': 'application/json' },
272
+ body: payload,
273
+ signal: controller.signal,
274
+ });
275
+ if (!resp.ok) {
276
+ throw new Error(`SLM API returned ${resp.status}: ${resp.statusText}`);
277
+ }
278
+ const data = (await resp.json());
279
+ const choices = data.choices;
280
+ if (!choices?.[0]?.message?.content) {
281
+ throw new Error('Unexpected API response structure');
282
+ }
283
+ return choices[0].message.content;
284
+ }
285
+ catch (err) {
286
+ if (err instanceof DOMException && err.name === 'AbortError') {
287
+ throw new Error(`SLM request timed out after ${this.timeout}s`);
288
+ }
289
+ throw err;
290
+ }
291
+ finally {
292
+ clearTimeout(timeoutId);
293
+ }
294
+ }
295
+ static _parseResponse(response) {
296
+ let text = response.trim();
297
+ if (text.startsWith('```')) {
298
+ const lines = text.split('\n');
299
+ if (lines[0].startsWith('```'))
300
+ lines.shift();
301
+ if (lines.length > 0 && lines[lines.length - 1].trim() === '```')
302
+ lines.pop();
303
+ text = lines.join('\n');
304
+ }
305
+ try {
306
+ return JSON.parse(text);
307
+ }
308
+ catch (err) {
309
+ throw new Error(`SLM returned invalid JSON: ${err.message}`);
310
+ }
311
+ }
312
+ }
313
+ //# sourceMappingURL=ai-enhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-enhancer.js","sourceRoot":"","sources":["../src/ai-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AACtD,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,SAAS,aAAa,CAAC,IAAY,EAAE,QAAgB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iCAAiC,GAAG,GAAG,CAAC,CAAC;IACvF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAgB;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,GAAG,GAAG,CAAC,CAAC;IACxF,OAAO,GAAG,CAAC;AACb,CAAC;AAoBD,MAAM,OAAO,UAAU;IACZ,QAAQ,CAAS;IACjB,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,OAAO,CAAS;IAEzB,YAAY,OAA2B;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,iBAAiB,CAAC;QACzF,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,cAAc,CAAC;QAC7E,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,aAAa,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,WAAW,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAEtF,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,OAAO,GAAoB,CAAC,GAAG,OAAO,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAkE,EAAE,CAAC;QAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACzD,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;gBAC1B,CAAC;gBAAC,MAAM,CAAC;oBACP,wCAAwC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,MAAqB;QACzC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7G,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,KAAK,GAAI,MAAM,CAAC,WAAuC,CAAC,UAAU,CAAC;QACzE,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAqB,EAAE,IAAc;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAA2B,CAAC;QACvE,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAa,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;YACzC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;YAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;YAC3C,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;YAChC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACjG,MAAM,OAAO,GAAG,MAAM,CAAC,WAAsC,CAAC;YAC9D,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG;gBACjB,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB;gBAC5D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;aACpD,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxC,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/E,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;oBAC/C,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,KAAK,8BAA8B,CAAC,CAAC;oBACjH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,mCAAmC;YACnC,MAAM,SAAS,GAAG,CAAC,WAAW,CAAU,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACvC,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/E,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;oBAC/C,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,KAAK,8BAA8B,CAAC,CAAC;oBACjH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,kCAAkC;YAClC,MAAM,SAAS,GAAG,CAAC,kBAAkB,CAAU,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACvC,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/E,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;oBAC/C,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,KAAK,8BAA8B,CAAC,CAAC;oBACjH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,gCAAgC;YAChC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,8BAA8B,CAAC,IAAI,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACpG,UAAU,CAAC,8BAA8B,CAAC,GAAG,SAAS,CAAC;gBACvD,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC;gBACzH,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAC;gBAC9D,OAAO,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;YAC1C,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;YAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC/C,OAAO,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAA4B,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACjE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;QACnC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC;QAEzC,OAAO,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAA4B,CAAC,CAAC;IAC3F,CAAC;IAEO,YAAY,CAAC,MAAqB,EAAE,IAAc;QACxD,MAAM,KAAK,GAAG;YACZ,wFAAwF;YACxF,EAAE;YACF,cAAc,MAAM,CAAC,QAAQ,EAAE;YAC/B,WAAW,MAAM,CAAC,MAAM,EAAE;SAC3B,CAAC;QACF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;YAClG,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAE/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAc;QACnC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC5B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAA8D,CAAC;YACpF,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;gBAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9E,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,8BAA+B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Wraps a function, converting Zod schema parameters into flat keyword arguments.
3
+ *
4
+ * This is the TypeScript equivalent of Python's `flatten_pydantic_params()`.
5
+ * It takes a function whose first parameter is a Zod-validated object and returns
6
+ * a new function that accepts the object's fields as individual keyword arguments.
7
+ *
8
+ * @param func - The original function accepting a single object parameter
9
+ * @param zodSchema - A Zod schema describing the object's shape
10
+ * @returns A new function that accepts flattened parameters
11
+ */
12
+ export declare function flattenParams<T extends Record<string, unknown>>(func: (input: T) => unknown, zodSchema: {
13
+ parse(data: unknown): T;
14
+ shape?: Record<string, unknown>;
15
+ }): (args: Record<string, unknown>) => unknown;
16
+ //# sourceMappingURL=flatten-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-params.d.ts","sourceRoot":"","sources":["../src/flatten-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAC3B,SAAS,EAAE;IAAE,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAK5C"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Wraps a function, converting Zod schema parameters into flat keyword arguments.
3
+ *
4
+ * This is the TypeScript equivalent of Python's `flatten_pydantic_params()`.
5
+ * It takes a function whose first parameter is a Zod-validated object and returns
6
+ * a new function that accepts the object's fields as individual keyword arguments.
7
+ *
8
+ * @param func - The original function accepting a single object parameter
9
+ * @param zodSchema - A Zod schema describing the object's shape
10
+ * @returns A new function that accepts flattened parameters
11
+ */
12
+ export function flattenParams(func, zodSchema) {
13
+ return (args) => {
14
+ const parsed = zodSchema.parse(args);
15
+ return func(parsed);
16
+ };
17
+ }
18
+ //# sourceMappingURL=flatten-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-params.js","sourceRoot":"","sources":["../src/flatten-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,IAA2B,EAC3B,SAAuE;IAEvE,OAAO,CAAC,IAA6B,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,20 @@ export type { ScannedModule } from './types.js';
2
2
  export { createScannedModule, cloneModule } from './types.js';
3
3
  export { BaseScanner } from './scanner.js';
4
4
  export { enrichSchemaDescriptions } from './schema-utils.js';
5
- export { resolveRef, resolveSchema, extractInputSchema, extractOutputSchema, } from './openapi.js';
5
+ export { resolveRef, resolveSchema, deepResolveRefs, extractInputSchema, extractOutputSchema, } from './openapi.js';
6
6
  export { annotationsToDict, moduleToDict, modulesToDicts, } from './serializers.js';
7
7
  export { resolveTarget } from './resolve-target.js';
8
8
  export { toMarkdown } from './formatting/index.js';
9
+ export { flattenParams } from './flatten-params.js';
10
+ export { AIEnhancer } from './ai-enhancer.js';
11
+ export type { AIEnhancerOptions, Enhancer } from './ai-enhancer.js';
9
12
  export { YAMLWriter } from './output/yaml-writer.js';
10
13
  export { TypeScriptWriter } from './output/typescript-writer.js';
11
14
  export { RegistryWriter } from './output/registry-writer.js';
12
15
  export { getWriter } from './output/factory.js';
16
+ export type { WriteResult, VerifyResult, Verifier } from './output/types.js';
17
+ export { createWriteResult } from './output/types.js';
18
+ export { WriteError } from './output/errors.js';
19
+ export { YAMLVerifier, SyntaxVerifier, RegistryVerifier, MagicBytesVerifier, JSONVerifier, runVerifierChain, } from './output/verifiers.js';
13
20
  export declare const VERSION: string;
14
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKhD,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,14 +1,19 @@
1
1
  export { createScannedModule, cloneModule } from './types.js';
2
2
  export { BaseScanner } from './scanner.js';
3
3
  export { enrichSchemaDescriptions } from './schema-utils.js';
4
- export { resolveRef, resolveSchema, extractInputSchema, extractOutputSchema, } from './openapi.js';
4
+ export { resolveRef, resolveSchema, deepResolveRefs, extractInputSchema, extractOutputSchema, } from './openapi.js';
5
5
  export { annotationsToDict, moduleToDict, modulesToDicts, } from './serializers.js';
6
6
  export { resolveTarget } from './resolve-target.js';
7
7
  export { toMarkdown } from './formatting/index.js';
8
+ export { flattenParams } from './flatten-params.js';
9
+ export { AIEnhancer } from './ai-enhancer.js';
8
10
  export { YAMLWriter } from './output/yaml-writer.js';
9
11
  export { TypeScriptWriter } from './output/typescript-writer.js';
10
12
  export { RegistryWriter } from './output/registry-writer.js';
11
13
  export { getWriter } from './output/factory.js';
14
+ export { createWriteResult } from './output/types.js';
15
+ export { WriteError } from './output/errors.js';
16
+ export { YAMLVerifier, SyntaxVerifier, RegistryVerifier, MagicBytesVerifier, JSONVerifier, runVerifierChain, } from './output/verifiers.js';
12
17
  import { createRequire } from 'node:module';
13
18
  const _require = createRequire(import.meta.url);
14
19
  const _pkg = _require('../package.json');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC"}
package/dist/openapi.d.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  export declare function resolveRef(refString: string, openapiDoc: Record<string, unknown>): Record<string, unknown>;
2
2
  export declare function resolveSchema(schema: Record<string, unknown>, openapiDoc: Record<string, unknown> | null): Record<string, unknown>;
3
+ /**
4
+ * Recursively resolve all `$ref` pointers in a schema.
5
+ *
6
+ * Handles nested `$ref`, `allOf`, `anyOf`, `oneOf`, and `items`.
7
+ * Depth-limited to 16 levels to prevent infinite recursion.
8
+ */
9
+ export declare function deepResolveRefs(schema: Record<string, unknown>, openapiDoc: Record<string, unknown>, depth?: number): Record<string, unknown>;
3
10
  export declare function extractInputSchema(operation: Record<string, unknown>, openapiDoc?: Record<string, unknown> | null): Record<string, unknown>;
4
11
  export declare function extractOutputSchema(operation: Record<string, unknown>, openapiDoc?: Record<string, unknown> | null): Record<string, unknown>;
5
12
  //# sourceMappingURL=openapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkCzB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6BzB"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,SAAI,GACR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiDzB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4CzB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB"}