apcore-toolkit 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -0
- package/LICENSE +185 -0
- package/README.md +91 -39
- package/dist/ai-enhancer.d.ts +18 -1
- package/dist/ai-enhancer.d.ts.map +1 -1
- package/dist/ai-enhancer.js +145 -72
- package/dist/ai-enhancer.js.map +1 -1
- package/dist/binding-loader.d.ts +55 -0
- package/dist/binding-loader.d.ts.map +1 -0
- package/dist/binding-loader.js +175 -0
- package/dist/binding-loader.js.map +1 -0
- package/dist/binding-parser.d.ts +80 -0
- package/dist/binding-parser.d.ts.map +1 -0
- package/dist/binding-parser.js +257 -0
- package/dist/binding-parser.js.map +1 -0
- package/dist/browser/index.d.ts +17 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +46 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/{display-resolver.d.ts → display/resolver.d.ts} +14 -2
- package/dist/display/resolver.d.ts.map +1 -0
- package/dist/{display-resolver.js → display/resolver.js} +79 -25
- package/dist/display/resolver.js.map +1 -0
- package/dist/formatting/markdown.d.ts.map +1 -1
- package/dist/formatting/markdown.js +25 -22
- package/dist/formatting/markdown.js.map +1 -1
- package/dist/http-verb-map.d.ts +79 -0
- package/dist/http-verb-map.d.ts.map +1 -0
- package/dist/http-verb-map.js +179 -0
- package/dist/http-verb-map.js.map +1 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +37 -10
- package/dist/openapi.js.map +1 -1
- package/dist/output/base-writer.d.ts +17 -0
- package/dist/output/base-writer.d.ts.map +1 -0
- package/dist/output/base-writer.js +34 -0
- package/dist/output/base-writer.js.map +1 -0
- package/dist/output/errors.d.ts +7 -2
- package/dist/output/errors.d.ts.map +1 -1
- package/dist/output/errors.js +8 -3
- package/dist/output/errors.js.map +1 -1
- package/dist/output/factory.d.ts +13 -1
- package/dist/output/factory.d.ts.map +1 -1
- package/dist/output/factory.js +21 -2
- package/dist/output/factory.js.map +1 -1
- package/dist/output/http-proxy-writer.d.ts +82 -0
- package/dist/output/http-proxy-writer.d.ts.map +1 -0
- package/dist/output/http-proxy-writer.js +222 -0
- package/dist/output/http-proxy-writer.js.map +1 -0
- package/dist/output/index.d.ts +1 -1
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +1 -1
- package/dist/output/index.js.map +1 -1
- package/dist/output/registry-writer.d.ts +23 -5
- package/dist/output/registry-writer.d.ts.map +1 -1
- package/dist/output/registry-writer.js +56 -16
- package/dist/output/registry-writer.js.map +1 -1
- package/dist/output/types.d.ts +1 -0
- package/dist/output/types.d.ts.map +1 -1
- package/dist/output/types.js.map +1 -1
- package/dist/output/typescript-writer.d.ts +14 -6
- package/dist/output/typescript-writer.d.ts.map +1 -1
- package/dist/output/typescript-writer.js +100 -32
- package/dist/output/typescript-writer.js.map +1 -1
- package/dist/output/verifiers.d.ts +1 -9
- package/dist/output/verifiers.d.ts.map +1 -1
- package/dist/output/verifiers.js +92 -42
- package/dist/output/verifiers.js.map +1 -1
- package/dist/output/verify-core.d.ts +20 -0
- package/dist/output/verify-core.d.ts.map +1 -0
- package/dist/output/verify-core.js +59 -0
- package/dist/output/verify-core.js.map +1 -0
- package/dist/output/yaml-writer.d.ts +18 -6
- package/dist/output/yaml-writer.d.ts.map +1 -1
- package/dist/output/yaml-writer.js +99 -42
- package/dist/output/yaml-writer.js.map +1 -1
- package/dist/resolve-target.d.ts.map +1 -1
- package/dist/resolve-target.js +34 -5
- package/dist/resolve-target.js.map +1 -1
- package/dist/safe-keys.d.ts +2 -0
- package/dist/safe-keys.d.ts.map +1 -0
- package/dist/safe-keys.js +19 -0
- package/dist/safe-keys.js.map +1 -0
- package/dist/scanner.d.ts +22 -0
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +40 -16
- package/dist/scanner.js.map +1 -1
- package/dist/schema-utils.d.ts.map +1 -1
- package/dist/schema-utils.js +13 -2
- package/dist/schema-utils.js.map +1 -1
- package/dist/serializers.d.ts +8 -1
- package/dist/serializers.d.ts.map +1 -1
- package/dist/serializers.js +15 -6
- package/dist/serializers.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/package.json +10 -2
- package/dist/display-resolver.d.ts.map +0 -1
- package/dist/display-resolver.js.map +0 -1
- package/dist/flatten-params.d.ts +0 -16
- package/dist/flatten-params.d.ts.map +0 -1
- package/dist/flatten-params.js +0 -18
- package/dist/flatten-params.js.map +0 -1
package/dist/ai-enhancer.js
CHANGED
|
@@ -10,6 +10,41 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { DEFAULT_ANNOTATIONS } from 'apcore-js';
|
|
12
12
|
import { cloneModule } from './types.js';
|
|
13
|
+
function camelToSnake(camel) {
|
|
14
|
+
return camel.replace(/[A-Z]/g, (m) => `_${m.toLowerCase()}`);
|
|
15
|
+
}
|
|
16
|
+
function buildAnnotationFieldSpecs() {
|
|
17
|
+
const specs = new Map();
|
|
18
|
+
for (const [camelKey, defaultValue] of Object.entries(DEFAULT_ANNOTATIONS)) {
|
|
19
|
+
if (camelKey === 'extra')
|
|
20
|
+
continue;
|
|
21
|
+
let validate;
|
|
22
|
+
if (camelKey === 'cacheKeyFields') {
|
|
23
|
+
// Default is null but the field type is `string[] | null`.
|
|
24
|
+
validate = (v) => v === null || (Array.isArray(v) && v.every((x) => typeof x === 'string'));
|
|
25
|
+
}
|
|
26
|
+
else if (typeof defaultValue === 'boolean') {
|
|
27
|
+
validate = (v) => typeof v === 'boolean';
|
|
28
|
+
}
|
|
29
|
+
else if (typeof defaultValue === 'number') {
|
|
30
|
+
// Reject booleans (not subclass of number in TS, but be defensive).
|
|
31
|
+
validate = (v) => typeof v === 'number' && Number.isFinite(v);
|
|
32
|
+
}
|
|
33
|
+
else if (typeof defaultValue === 'string') {
|
|
34
|
+
validate = (v) => typeof v === 'string';
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// Unknown shape — skip rather than risk garbage data.
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
specs.set(camelToSnake(camelKey), {
|
|
41
|
+
camelKey: camelKey,
|
|
42
|
+
validate,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return specs;
|
|
46
|
+
}
|
|
47
|
+
const ANNOTATION_FIELD_SPECS = buildAnnotationFieldSpecs();
|
|
13
48
|
const _DEFAULT_ENDPOINT = 'http://localhost:11434/v1';
|
|
14
49
|
const _DEFAULT_MODEL = 'qwen:0.6b';
|
|
15
50
|
const _DEFAULT_THRESHOLD = 0.7;
|
|
@@ -33,6 +68,22 @@ function parseIntEnv(name, fallback) {
|
|
|
33
68
|
throw new Error(`${name} must be a valid integer, got "${raw}"`);
|
|
34
69
|
return val;
|
|
35
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* AI-driven metadata enhancement using a local SLM (Small Language Model).
|
|
73
|
+
*
|
|
74
|
+
* Calls an OpenAI-compatible local API (Ollama, vLLM, LM Studio, etc.) to fill
|
|
75
|
+
* metadata gaps that static analysis cannot resolve: missing descriptions,
|
|
76
|
+
* behavioral annotation inference, and input schema generation for untyped
|
|
77
|
+
* functions.
|
|
78
|
+
*
|
|
79
|
+
* Enhancement is gated behind the `APCORE_AI_ENABLED` environment variable.
|
|
80
|
+
* All AI-generated fields are tagged with `x-generated-by: slm` in the module
|
|
81
|
+
* metadata for auditability.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* const enhancer = new AIEnhancer({ endpoint: 'http://localhost:11434/v1', model: 'qwen:0.6b' });
|
|
85
|
+
* const enhanced = await enhancer.enhance(modules);
|
|
86
|
+
*/
|
|
36
87
|
export class AIEnhancer {
|
|
37
88
|
endpoint;
|
|
38
89
|
model;
|
|
@@ -45,6 +96,17 @@ export class AIEnhancer {
|
|
|
45
96
|
this.threshold = options?.threshold ?? parseFloatEnv('APCORE_AI_THRESHOLD', _DEFAULT_THRESHOLD);
|
|
46
97
|
this.batchSize = options?.batchSize ?? parseIntEnv('APCORE_AI_BATCH_SIZE', _DEFAULT_BATCH_SIZE);
|
|
47
98
|
this.timeout = options?.timeout ?? parseIntEnv('APCORE_AI_TIMEOUT', _DEFAULT_TIMEOUT);
|
|
99
|
+
try {
|
|
100
|
+
const parsed = new URL(this.endpoint);
|
|
101
|
+
if (!['http:', 'https:'].includes(parsed.protocol)) {
|
|
102
|
+
throw new Error(`AIEnhancer endpoint must use http: or https: protocol, got "${parsed.protocol}"`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
if (err instanceof Error && err.message.startsWith('AIEnhancer endpoint'))
|
|
107
|
+
throw err;
|
|
108
|
+
throw new Error(`AIEnhancer endpoint is not a valid URL: ${this.endpoint}`, { cause: err });
|
|
109
|
+
}
|
|
48
110
|
if (this.threshold < 0 || this.threshold > 1) {
|
|
49
111
|
throw new Error('APCORE_AI_THRESHOLD must be a number between 0.0 and 1.0');
|
|
50
112
|
}
|
|
@@ -60,6 +122,8 @@ export class AIEnhancer {
|
|
|
60
122
|
return val === 'true' || val === '1' || val === 'yes';
|
|
61
123
|
}
|
|
62
124
|
async enhance(modules) {
|
|
125
|
+
if (!AIEnhancer.isEnabled())
|
|
126
|
+
return modules;
|
|
63
127
|
const results = [...modules];
|
|
64
128
|
const pending = [];
|
|
65
129
|
for (let i = 0; i < modules.length; i++) {
|
|
@@ -70,18 +134,35 @@ export class AIEnhancer {
|
|
|
70
134
|
}
|
|
71
135
|
for (let batchStart = 0; batchStart < pending.length; batchStart += this.batchSize) {
|
|
72
136
|
const batch = pending.slice(batchStart, batchStart + this.batchSize);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
137
|
+
const settled = await Promise.allSettled(batch.map(({ module, gaps }) => this._enhanceModule(module, gaps)));
|
|
138
|
+
for (let i = 0; i < batch.length; i++) {
|
|
139
|
+
const { idx, module } = batch[i];
|
|
140
|
+
const outcome = settled[i];
|
|
141
|
+
if (outcome.status === 'fulfilled') {
|
|
142
|
+
results[idx] = outcome.value;
|
|
77
143
|
}
|
|
78
|
-
|
|
79
|
-
|
|
144
|
+
else {
|
|
145
|
+
console.warn('AIEnhancer: enhancement failed for %s:', module.moduleId, outcome.reason);
|
|
80
146
|
}
|
|
81
147
|
}
|
|
82
148
|
}
|
|
83
149
|
return results;
|
|
84
150
|
}
|
|
151
|
+
_annotationsAreDefault(annotations) {
|
|
152
|
+
if (annotations == null)
|
|
153
|
+
return true;
|
|
154
|
+
const ann = annotations;
|
|
155
|
+
const def = DEFAULT_ANNOTATIONS;
|
|
156
|
+
return Object.keys(def).every((k) => {
|
|
157
|
+
// `extra` is an object type whose default is Object.freeze({}). Reference
|
|
158
|
+
// equality always fails after cloning, producing spurious SLM calls.
|
|
159
|
+
// The SLM never populates `extra` (excluded from ANNOTATION_FIELD_SPECS),
|
|
160
|
+
// so we skip it here to avoid false "not at default" readings.
|
|
161
|
+
if (k === 'extra')
|
|
162
|
+
return true;
|
|
163
|
+
return ann[k] === def[k];
|
|
164
|
+
});
|
|
165
|
+
}
|
|
85
166
|
_identifyGaps(module) {
|
|
86
167
|
const gaps = [];
|
|
87
168
|
if (!module.description || module.description === module.moduleId) {
|
|
@@ -90,10 +171,13 @@ export class AIEnhancer {
|
|
|
90
171
|
if (!module.documentation) {
|
|
91
172
|
gaps.push('documentation');
|
|
92
173
|
}
|
|
93
|
-
if (
|
|
174
|
+
if (this._annotationsAreDefault(module.annotations)) {
|
|
94
175
|
gaps.push('annotations');
|
|
95
176
|
}
|
|
96
|
-
const
|
|
177
|
+
const schema = module.inputSchema;
|
|
178
|
+
const props = typeof schema === 'object' && schema !== null && !Array.isArray(schema)
|
|
179
|
+
? schema.properties
|
|
180
|
+
: undefined;
|
|
97
181
|
if (!props || (typeof props === 'object' && Object.keys(props).length === 0)) {
|
|
98
182
|
gaps.push('input_schema');
|
|
99
183
|
}
|
|
@@ -104,7 +188,16 @@ export class AIEnhancer {
|
|
|
104
188
|
const response = await this._callLLM(prompt);
|
|
105
189
|
const parsed = AIEnhancer._parseResponse(response);
|
|
106
190
|
const updates = {};
|
|
107
|
-
|
|
191
|
+
// Build parsedConf from a null-prototype object so attacker-controlled
|
|
192
|
+
// keys like '__proto__' cannot affect prototype lookups.
|
|
193
|
+
const rawConf = parsed.confidence;
|
|
194
|
+
const parsedConf = Object.create(null);
|
|
195
|
+
if (rawConf !== null && typeof rawConf === 'object' && !Array.isArray(rawConf)) {
|
|
196
|
+
for (const [k, v] of Object.entries(rawConf)) {
|
|
197
|
+
if (typeof v === 'number' && Number.isFinite(v))
|
|
198
|
+
parsedConf[k] = v;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
108
201
|
const confidence = {};
|
|
109
202
|
const warnings = [...module.warnings];
|
|
110
203
|
if (gaps.includes('description') && parsed.description) {
|
|
@@ -128,61 +221,22 @@ export class AIEnhancer {
|
|
|
128
221
|
}
|
|
129
222
|
}
|
|
130
223
|
if (gaps.includes('annotations') && parsed.annotations && typeof parsed.annotations === 'object') {
|
|
224
|
+
// SLM produces wire-format snake_case keys; ANNOTATION_FIELD_SPECS maps
|
|
225
|
+
// each snake key to the camelCase ModuleAnnotations property and a type
|
|
226
|
+
// validator. Confidence-gated values are merged into the camelCase base
|
|
227
|
+
// so the resulting annotations object is a valid ModuleAnnotations.
|
|
131
228
|
const annData = parsed.annotations;
|
|
132
229
|
const accepted = {};
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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;
|
|
230
|
+
for (const [snakeKey, spec] of ANNOTATION_FIELD_SPECS) {
|
|
231
|
+
if (!Object.hasOwn(annData, snakeKey) || !spec.validate(annData[snakeKey]))
|
|
232
|
+
continue;
|
|
233
|
+
const fieldConf = parsedConf[`annotations.${snakeKey}`] ?? parsedConf[snakeKey] ?? 0;
|
|
234
|
+
confidence[`annotations.${snakeKey}`] = fieldConf;
|
|
181
235
|
if (fieldConf >= this.threshold) {
|
|
182
|
-
accepted[
|
|
236
|
+
accepted[spec.camelKey] = annData[snakeKey];
|
|
183
237
|
}
|
|
184
238
|
else {
|
|
185
|
-
warnings.push(`Low confidence (${fieldConf.toFixed(2)}) for annotations
|
|
239
|
+
warnings.push(`Low confidence (${fieldConf.toFixed(2)}) for annotations.${snakeKey} — skipped. Review manually.`);
|
|
186
240
|
}
|
|
187
241
|
}
|
|
188
242
|
if (Object.keys(accepted).length > 0) {
|
|
@@ -193,8 +247,13 @@ export class AIEnhancer {
|
|
|
193
247
|
if (gaps.includes('input_schema') && parsed.input_schema) {
|
|
194
248
|
const conf = parsedConf.input_schema ?? 0;
|
|
195
249
|
confidence.input_schema = conf;
|
|
196
|
-
|
|
197
|
-
|
|
250
|
+
const s = parsed.input_schema;
|
|
251
|
+
const isValidShape = typeof s === 'object' && !Array.isArray(s) && s !== null && 'type' in s;
|
|
252
|
+
if (!isValidShape) {
|
|
253
|
+
warnings.push('SLM returned malformed input_schema (missing "type") — skipped. Review manually.');
|
|
254
|
+
}
|
|
255
|
+
else if (conf >= this.threshold) {
|
|
256
|
+
updates.inputSchema = s;
|
|
198
257
|
}
|
|
199
258
|
else {
|
|
200
259
|
warnings.push(`Low confidence (${conf.toFixed(2)}) for input_schema — skipped. Review manually.`);
|
|
@@ -248,9 +307,16 @@ export class AIEnhancer {
|
|
|
248
307
|
if (gaps.includes('input_schema')) {
|
|
249
308
|
parts.push(' "input_schema": <JSON Schema object for function parameters>,');
|
|
250
309
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
310
|
+
// Build confidence keys dynamically from all annotation fields so the
|
|
311
|
+
// prompt stays in sync as DEFAULT_ANNOTATIONS evolves upstream.
|
|
312
|
+
const confidenceKeys = Object.fromEntries(Object.keys(DEFAULT_ANNOTATIONS)
|
|
313
|
+
.filter(k => k !== 'extra')
|
|
314
|
+
.map(k => [camelToSnake(k), 0.0]));
|
|
315
|
+
const confidenceKeysJson = JSON.stringify(confidenceKeys, null, 4)
|
|
316
|
+
.split('\n')
|
|
317
|
+
.map((l, i) => i === 0 ? ` "confidence": ${l}` : ` ${l}`)
|
|
318
|
+
.join('\n');
|
|
319
|
+
parts.push(confidenceKeysJson);
|
|
254
320
|
parts.push('}');
|
|
255
321
|
parts.push('');
|
|
256
322
|
parts.push('Respond with ONLY valid JSON, no markdown fences or explanation.');
|
|
@@ -284,7 +350,7 @@ export class AIEnhancer {
|
|
|
284
350
|
}
|
|
285
351
|
catch (err) {
|
|
286
352
|
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
287
|
-
throw new Error(`SLM request timed out after ${this.timeout}s
|
|
353
|
+
throw new Error(`SLM request timed out after ${this.timeout}s`, { cause: err });
|
|
288
354
|
}
|
|
289
355
|
throw err;
|
|
290
356
|
}
|
|
@@ -294,19 +360,26 @@ export class AIEnhancer {
|
|
|
294
360
|
}
|
|
295
361
|
static _parseResponse(response) {
|
|
296
362
|
let text = response.trim();
|
|
363
|
+
// Strip markdown code fence: ```[lang]\n ... \n``` (closing fence optional)
|
|
297
364
|
if (text.startsWith('```')) {
|
|
298
|
-
const
|
|
299
|
-
if (
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
365
|
+
const firstNl = text.indexOf('\n');
|
|
366
|
+
if (firstNl === -1) {
|
|
367
|
+
text = '';
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
text = text.slice(firstNl + 1);
|
|
371
|
+
if (text.endsWith('```')) {
|
|
372
|
+
const lastNl = text.lastIndexOf('\n');
|
|
373
|
+
text = lastNl === -1 ? '' : text.slice(0, lastNl);
|
|
374
|
+
}
|
|
375
|
+
text = text.trim();
|
|
376
|
+
}
|
|
304
377
|
}
|
|
305
378
|
try {
|
|
306
379
|
return JSON.parse(text);
|
|
307
380
|
}
|
|
308
381
|
catch (err) {
|
|
309
|
-
throw new Error(`SLM returned invalid JSON: ${err.message}
|
|
382
|
+
throw new Error(`SLM returned invalid JSON: ${err.message}`, { cause: err });
|
|
310
383
|
}
|
|
311
384
|
}
|
|
312
385
|
}
|
package/dist/ai-enhancer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-enhancer.js","sourceRoot":"","sources":["../src/ai-enhancer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-enhancer.js","sourceRoot":"","sources":["../src/ai-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BindingLoader — parse `.binding.yaml` files back into `ScannedModule`.
|
|
3
|
+
*
|
|
4
|
+
* Inverse of {@link YAMLWriter}. Unlike apcore-js's binding loader (which
|
|
5
|
+
* imports the target and creates a runtime `FunctionModule`), this loader
|
|
6
|
+
* is pure data: it parses YAML into `ScannedModule` objects for validation,
|
|
7
|
+
* merging, diffing, or round-trip workflows. No module resolution occurs.
|
|
8
|
+
*
|
|
9
|
+
* This file adds the filesystem-reading entry point (`load(filePath)`) on
|
|
10
|
+
* top of the runtime-neutral parsing in `binding-parser.ts`. Consumers that
|
|
11
|
+
* only need to parse already-loaded documents (browsers, edge runtimes,
|
|
12
|
+
* workers) should use {@link BindingParser} or {@link parseBindingDocument}
|
|
13
|
+
* from `apcore-toolkit/browser` instead.
|
|
14
|
+
*/
|
|
15
|
+
import { BindingParser } from './binding-parser.js';
|
|
16
|
+
import type { BindingLoadOptions } from './binding-parser.js';
|
|
17
|
+
import type { ScannedModule } from './types.js';
|
|
18
|
+
export { BindingLoadError, BindingParser, parseBindingDocument } from './binding-parser.js';
|
|
19
|
+
export type { BindingLoadOptions } from './binding-parser.js';
|
|
20
|
+
/**
|
|
21
|
+
* Loads `.binding.yaml` files into `ScannedModule` objects.
|
|
22
|
+
*
|
|
23
|
+
* Extends {@link BindingParser} so `loadData(data)` (runtime-neutral parsing
|
|
24
|
+
* of pre-loaded documents) is also available on every `BindingLoader`
|
|
25
|
+
* instance — the class hierarchy mirrors the Python SDK's
|
|
26
|
+
* `BindingLoader.load_data` method.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const loader = new BindingLoader();
|
|
31
|
+
* const modules = loader.load('./bindings/');
|
|
32
|
+
* const strict = loader.load('foo.binding.yaml', { strict: true });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class BindingLoader extends BindingParser {
|
|
36
|
+
/**
|
|
37
|
+
* Load one file or every `*.binding.yaml` in a directory.
|
|
38
|
+
*
|
|
39
|
+
* @throws {BindingLoadError} when the path is missing, YAML is malformed,
|
|
40
|
+
* or any entry fails validation.
|
|
41
|
+
*/
|
|
42
|
+
load(filePath: string, options?: BindingLoadOptions): ScannedModule[];
|
|
43
|
+
/**
|
|
44
|
+
* Recursively collect `.binding.yaml` files under `dir`. Follows symlinks
|
|
45
|
+
* (for parity with the non-recursive branch, which reads file contents and
|
|
46
|
+
* thus transparently dereferences symlinks) and caps recursion at
|
|
47
|
+
* {@link MAX_RECURSION_DEPTH}. Permission errors (`EACCES`/`EPERM`) on an
|
|
48
|
+
* individual subdirectory are swallowed with a warning so one unreadable
|
|
49
|
+
* subtree does not abort loading of the rest; all other `readdirSync`
|
|
50
|
+
* failures (e.g. `EMFILE`, `ENOTDIR`) propagate so systemic problems are
|
|
51
|
+
* not silently turned into partial loads.
|
|
52
|
+
*/
|
|
53
|
+
private _collectRecursive;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=binding-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-loader.d.ts","sourceRoot":"","sources":["../src/binding-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAEL,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAU9D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAiErE;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;CA6C1B"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BindingLoader — parse `.binding.yaml` files back into `ScannedModule`.
|
|
3
|
+
*
|
|
4
|
+
* Inverse of {@link YAMLWriter}. Unlike apcore-js's binding loader (which
|
|
5
|
+
* imports the target and creates a runtime `FunctionModule`), this loader
|
|
6
|
+
* is pure data: it parses YAML into `ScannedModule` objects for validation,
|
|
7
|
+
* merging, diffing, or round-trip workflows. No module resolution occurs.
|
|
8
|
+
*
|
|
9
|
+
* This file adds the filesystem-reading entry point (`load(filePath)`) on
|
|
10
|
+
* top of the runtime-neutral parsing in `binding-parser.ts`. Consumers that
|
|
11
|
+
* only need to parse already-loaded documents (browsers, edge runtimes,
|
|
12
|
+
* workers) should use {@link BindingParser} or {@link parseBindingDocument}
|
|
13
|
+
* from `apcore-toolkit/browser` instead.
|
|
14
|
+
*/
|
|
15
|
+
import * as fs from 'node:fs';
|
|
16
|
+
import * as path from 'node:path';
|
|
17
|
+
import * as yaml from 'js-yaml';
|
|
18
|
+
import { BindingLoadError, BindingParser, parseBindingDocument, } from './binding-parser.js';
|
|
19
|
+
// Re-export the runtime-neutral surface so the default package entry
|
|
20
|
+
// (`apcore-toolkit`) continues to expose exactly the same symbols it did
|
|
21
|
+
// before the split — existing consumers (`nestjs-apcore` etc.) see no
|
|
22
|
+
// change — plus the new {@link BindingParser} and
|
|
23
|
+
// {@link parseBindingDocument} additions that are now also available.
|
|
24
|
+
export { BindingLoadError, BindingParser, parseBindingDocument } from './binding-parser.js';
|
|
25
|
+
// Cap on directory recursion depth in `_collectRecursive`. This is the
|
|
26
|
+
// PRIMARY defense against symlink loops (`a -> b -> a`): `statSync` resolves
|
|
27
|
+
// symlinks but does not detect cycles, so a cyclic graph would recurse until
|
|
28
|
+
// the JS stack overflows without this cap. Also bounds worst-case stack
|
|
29
|
+
// usage on legitimately-deep trees; 64 is well above any realistic
|
|
30
|
+
// `.binding.yaml` layout.
|
|
31
|
+
const MAX_RECURSION_DEPTH = 64;
|
|
32
|
+
/**
|
|
33
|
+
* Loads `.binding.yaml` files into `ScannedModule` objects.
|
|
34
|
+
*
|
|
35
|
+
* Extends {@link BindingParser} so `loadData(data)` (runtime-neutral parsing
|
|
36
|
+
* of pre-loaded documents) is also available on every `BindingLoader`
|
|
37
|
+
* instance — the class hierarchy mirrors the Python SDK's
|
|
38
|
+
* `BindingLoader.load_data` method.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const loader = new BindingLoader();
|
|
43
|
+
* const modules = loader.load('./bindings/');
|
|
44
|
+
* const strict = loader.load('foo.binding.yaml', { strict: true });
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export class BindingLoader extends BindingParser {
|
|
48
|
+
/**
|
|
49
|
+
* Load one file or every `*.binding.yaml` in a directory.
|
|
50
|
+
*
|
|
51
|
+
* @throws {BindingLoadError} when the path is missing, YAML is malformed,
|
|
52
|
+
* or any entry fails validation.
|
|
53
|
+
*/
|
|
54
|
+
load(filePath, options) {
|
|
55
|
+
const strict = options?.strict ?? false;
|
|
56
|
+
const recursive = options?.recursive ?? false;
|
|
57
|
+
let stat;
|
|
58
|
+
try {
|
|
59
|
+
stat = fs.statSync(filePath);
|
|
60
|
+
}
|
|
61
|
+
catch (exc) {
|
|
62
|
+
const code = exc.code;
|
|
63
|
+
const reason = code === 'ENOENT'
|
|
64
|
+
? 'path does not exist'
|
|
65
|
+
: `cannot stat path (${code ?? 'unknown'})`;
|
|
66
|
+
throw new BindingLoadError({ reason, filePath });
|
|
67
|
+
}
|
|
68
|
+
let files;
|
|
69
|
+
if (stat.isFile()) {
|
|
70
|
+
files = [filePath];
|
|
71
|
+
}
|
|
72
|
+
else if (stat.isDirectory()) {
|
|
73
|
+
if (recursive) {
|
|
74
|
+
files = this._collectRecursive(filePath).sort();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
files = fs
|
|
78
|
+
.readdirSync(filePath)
|
|
79
|
+
.filter((f) => f.endsWith('.binding.yaml'))
|
|
80
|
+
.sort()
|
|
81
|
+
.map((f) => path.join(filePath, f));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
throw new BindingLoadError({
|
|
86
|
+
reason: 'path is neither a file nor a directory',
|
|
87
|
+
filePath,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const modules = [];
|
|
91
|
+
for (const f of files) {
|
|
92
|
+
let content;
|
|
93
|
+
try {
|
|
94
|
+
content = fs.readFileSync(f, 'utf-8');
|
|
95
|
+
}
|
|
96
|
+
catch (exc) {
|
|
97
|
+
throw new BindingLoadError({
|
|
98
|
+
reason: `failed to read file: ${exc.message}`,
|
|
99
|
+
filePath: f,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
let raw;
|
|
103
|
+
try {
|
|
104
|
+
raw = yaml.load(content);
|
|
105
|
+
}
|
|
106
|
+
catch (exc) {
|
|
107
|
+
throw new BindingLoadError({
|
|
108
|
+
reason: `failed to parse YAML: ${exc.message}`,
|
|
109
|
+
filePath: f,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (raw == null) {
|
|
113
|
+
console.warn(`BindingLoader: ${f} is empty, skipping`);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
modules.push(...parseBindingDocument(raw, { strict }, f));
|
|
117
|
+
}
|
|
118
|
+
return modules;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Recursively collect `.binding.yaml` files under `dir`. Follows symlinks
|
|
122
|
+
* (for parity with the non-recursive branch, which reads file contents and
|
|
123
|
+
* thus transparently dereferences symlinks) and caps recursion at
|
|
124
|
+
* {@link MAX_RECURSION_DEPTH}. Permission errors (`EACCES`/`EPERM`) on an
|
|
125
|
+
* individual subdirectory are swallowed with a warning so one unreadable
|
|
126
|
+
* subtree does not abort loading of the rest; all other `readdirSync`
|
|
127
|
+
* failures (e.g. `EMFILE`, `ENOTDIR`) propagate so systemic problems are
|
|
128
|
+
* not silently turned into partial loads.
|
|
129
|
+
*/
|
|
130
|
+
_collectRecursive(dir, depth = 0) {
|
|
131
|
+
if (depth > MAX_RECURSION_DEPTH) {
|
|
132
|
+
console.warn(`BindingLoader: max recursion depth (${MAX_RECURSION_DEPTH}) reached at ${dir}; stopping descent.`);
|
|
133
|
+
return [];
|
|
134
|
+
}
|
|
135
|
+
let entries;
|
|
136
|
+
try {
|
|
137
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
138
|
+
}
|
|
139
|
+
catch (exc) {
|
|
140
|
+
const code = exc.code;
|
|
141
|
+
if (code === 'EACCES' || code === 'EPERM') {
|
|
142
|
+
console.warn(`BindingLoader: cannot read ${dir}: ${exc.message}; skipping`);
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
throw exc;
|
|
146
|
+
}
|
|
147
|
+
const results = [];
|
|
148
|
+
for (const entry of entries) {
|
|
149
|
+
const full = path.join(dir, entry.name);
|
|
150
|
+
let isDir = entry.isDirectory();
|
|
151
|
+
let isFile = entry.isFile();
|
|
152
|
+
// Dirent.isDirectory/isFile both return false for symlinks; follow the
|
|
153
|
+
// link with stat so symlinked bindings / bindings-dirs behave the same
|
|
154
|
+
// as real ones (matching non-recursive-branch behaviour).
|
|
155
|
+
if (entry.isSymbolicLink()) {
|
|
156
|
+
try {
|
|
157
|
+
const st = fs.statSync(full);
|
|
158
|
+
isDir = st.isDirectory();
|
|
159
|
+
isFile = st.isFile();
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (isDir) {
|
|
166
|
+
results.push(...this._collectRecursive(full, depth + 1));
|
|
167
|
+
}
|
|
168
|
+
else if (isFile && entry.name.endsWith('.binding.yaml')) {
|
|
169
|
+
results.push(full);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return results;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=binding-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-loader.js","sourceRoot":"","sources":["../src/binding-loader.ts"],"names":[],"mappings":"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"}
|