apcore-toolkit 0.4.1 → 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 +100 -23
- 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 +52 -14
- 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.map +1 -1
- package/dist/serializers.js +2 -0
- 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
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-neutral binding document parser.
|
|
3
|
+
*
|
|
4
|
+
* Contains the pure parsing logic shared by {@link BindingLoader} — it takes
|
|
5
|
+
* a pre-loaded `bindings` document (e.g. the result of `yaml.load()` or a
|
|
6
|
+
* JSON fetch response) and returns `ScannedModule[]`. No filesystem access.
|
|
7
|
+
*
|
|
8
|
+
* `BindingLoader` (in `binding-loader.ts`) extends {@link BindingParser} to
|
|
9
|
+
* add the `load(filePath)` entry point that reads from disk with `node:fs`.
|
|
10
|
+
* Consumers that only need in-memory parsing — browsers, edge runtimes,
|
|
11
|
+
* workers — import {@link BindingParser} or {@link parseBindingDocument}
|
|
12
|
+
* from here (or via `apcore-toolkit/browser`).
|
|
13
|
+
*/
|
|
14
|
+
import { annotationsFromJSON } from 'apcore-js';
|
|
15
|
+
import { createScannedModule } from './types.js';
|
|
16
|
+
import { PROTO_DENY } from './safe-keys.js';
|
|
17
|
+
const SUPPORTED_SPEC_VERSIONS = new Set(['1.0']);
|
|
18
|
+
const LOOSE_REQUIRED = ['module_id', 'target'];
|
|
19
|
+
const STRICT_EXTRA = ['input_schema', 'output_schema'];
|
|
20
|
+
/** Thrown when a binding YAML entry cannot be parsed. */
|
|
21
|
+
export class BindingLoadError extends Error {
|
|
22
|
+
filePath;
|
|
23
|
+
moduleId;
|
|
24
|
+
missingFields;
|
|
25
|
+
reason;
|
|
26
|
+
constructor(params) {
|
|
27
|
+
const parts = [params.reason];
|
|
28
|
+
if (params.filePath)
|
|
29
|
+
parts.push(`file=${params.filePath}`);
|
|
30
|
+
if (params.moduleId)
|
|
31
|
+
parts.push(`module_id=${params.moduleId}`);
|
|
32
|
+
if (params.missingFields && params.missingFields.length > 0) {
|
|
33
|
+
parts.push(`missing=[${params.missingFields.join(', ')}]`);
|
|
34
|
+
}
|
|
35
|
+
super(parts.join(' | '));
|
|
36
|
+
this.name = 'BindingLoadError';
|
|
37
|
+
this.reason = params.reason;
|
|
38
|
+
this.filePath = params.filePath ?? null;
|
|
39
|
+
this.moduleId = params.moduleId ?? null;
|
|
40
|
+
this.missingFields = params.missingFields ?? [];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parse a binding document (already-loaded data, no filesystem access) into
|
|
45
|
+
* `ScannedModule[]`.
|
|
46
|
+
*
|
|
47
|
+
* Equivalent to {@link BindingParser.loadData} but lets callers supply an
|
|
48
|
+
* explicit `filePath` string that will be embedded in any
|
|
49
|
+
* {@link BindingLoadError} thrown for malformed entries — useful when you
|
|
50
|
+
* know the document came from a specific file (e.g. a server endpoint
|
|
51
|
+
* identifies it by path). Pass `null` when no file context applies.
|
|
52
|
+
*/
|
|
53
|
+
export function parseBindingDocument(raw, options, filePath = null) {
|
|
54
|
+
const strict = options?.strict ?? false;
|
|
55
|
+
if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
56
|
+
throw new BindingLoadError({
|
|
57
|
+
reason: 'top-level binding document must be a mapping',
|
|
58
|
+
filePath,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const data = raw;
|
|
62
|
+
checkSpecVersion(data['spec_version'], filePath);
|
|
63
|
+
const bindings = data['bindings'];
|
|
64
|
+
if (!Array.isArray(bindings)) {
|
|
65
|
+
throw new BindingLoadError({
|
|
66
|
+
reason: "'bindings' key missing or not a list",
|
|
67
|
+
filePath,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return bindings.map((entry) => {
|
|
71
|
+
if (entry == null || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
72
|
+
throw new BindingLoadError({
|
|
73
|
+
reason: 'binding entry must be a mapping',
|
|
74
|
+
filePath,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return parseEntry(entry, filePath, strict);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Runtime-neutral binding parser.
|
|
82
|
+
*
|
|
83
|
+
* Parses pre-loaded `bindings` data (e.g. from `yaml.load()`, `fetch()` +
|
|
84
|
+
* `JSON.parse()`, etc.) into `ScannedModule[]`. Does not touch the
|
|
85
|
+
* filesystem — safe for browsers, edge runtimes, and workers.
|
|
86
|
+
*
|
|
87
|
+
* For filesystem-based loading, use {@link BindingLoader} (subclass,
|
|
88
|
+
* Node-only) which adds the `load(filePath)` entry point.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```ts
|
|
92
|
+
* import { BindingParser } from 'apcore-toolkit/browser';
|
|
93
|
+
*
|
|
94
|
+
* const resp = await fetch('/api/bindings.yaml');
|
|
95
|
+
* const doc = yaml.load(await resp.text());
|
|
96
|
+
* const mods = new BindingParser().loadData(doc);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export class BindingParser {
|
|
100
|
+
/** Parse a pre-loaded binding dict (`{ bindings: [...] }`). */
|
|
101
|
+
loadData(data, options) {
|
|
102
|
+
return parseBindingDocument(data, options, null);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Internal helpers — module-private parsing primitives.
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
function checkSpecVersion(specVersion, filePath) {
|
|
109
|
+
const where = filePath ?? '<inline>';
|
|
110
|
+
if (specVersion == null) {
|
|
111
|
+
console.warn(`BindingLoader: ${where} missing 'spec_version'; defaulting to '1.0'.`);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (typeof specVersion !== 'string' || !SUPPORTED_SPEC_VERSIONS.has(specVersion)) {
|
|
115
|
+
console.warn(`BindingLoader: ${where} has spec_version=${JSON.stringify(specVersion)} ` +
|
|
116
|
+
`newer than supported [${[...SUPPORTED_SPEC_VERSIONS].sort().join(', ')}]; proceeding best-effort.`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function parseEntry(entry, filePath, strict) {
|
|
120
|
+
const required = strict
|
|
121
|
+
? [...LOOSE_REQUIRED, ...STRICT_EXTRA]
|
|
122
|
+
: LOOSE_REQUIRED;
|
|
123
|
+
// A required field is "missing or invalid" when absent, null, or of the
|
|
124
|
+
// wrong type. Previously only null/absent was rejected, so
|
|
125
|
+
// ``module_id: 42`` or ``target: true`` silently coerced to
|
|
126
|
+
// ``String(42) = "42"`` downstream and corrupted the registered module.
|
|
127
|
+
// This now matches the Rust loader's strict behaviour.
|
|
128
|
+
const missing = required.filter((f) => isRequiredFieldInvalid(f, entry));
|
|
129
|
+
if (missing.length > 0) {
|
|
130
|
+
throw new BindingLoadError({
|
|
131
|
+
reason: 'missing or invalid required fields',
|
|
132
|
+
filePath,
|
|
133
|
+
moduleId: typeof entry['module_id'] === 'string' ? entry['module_id'] : null,
|
|
134
|
+
missingFields: missing,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const moduleId = String(entry['module_id']);
|
|
138
|
+
return createScannedModule({
|
|
139
|
+
moduleId,
|
|
140
|
+
description: entry['description'] ?? '',
|
|
141
|
+
inputSchema: asRecord(entry['input_schema'], 'input_schema', moduleId),
|
|
142
|
+
outputSchema: asRecord(entry['output_schema'], 'output_schema', moduleId),
|
|
143
|
+
tags: asStringArray(entry['tags']),
|
|
144
|
+
target: String(entry['target']),
|
|
145
|
+
version: entry['version'] ?? '1.0.0',
|
|
146
|
+
annotations: parseAnnotations(entry['annotations'], moduleId),
|
|
147
|
+
documentation: entry['documentation'] ?? null,
|
|
148
|
+
suggestedAlias: entry['suggested_alias'] ?? null,
|
|
149
|
+
examples: parseExamples(entry['examples'], moduleId),
|
|
150
|
+
metadata: asRecord(entry['metadata'], 'metadata', moduleId),
|
|
151
|
+
display: asRecordOrNull(entry['display'], 'display', moduleId),
|
|
152
|
+
warnings: asStringArray(entry['warnings']),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Return ``true`` when a required field is absent, null, or of the wrong
|
|
157
|
+
* type. Schema fields (``input_schema``, ``output_schema``) must be plain
|
|
158
|
+
* objects; other required fields (``module_id``, ``target``) must be
|
|
159
|
+
* non-empty strings.
|
|
160
|
+
*/
|
|
161
|
+
function isRequiredFieldInvalid(field, entry) {
|
|
162
|
+
if (!(field in entry))
|
|
163
|
+
return true;
|
|
164
|
+
const value = entry[field];
|
|
165
|
+
if (value == null)
|
|
166
|
+
return true;
|
|
167
|
+
if (field === 'input_schema' || field === 'output_schema') {
|
|
168
|
+
return typeof value !== 'object' || Array.isArray(value);
|
|
169
|
+
}
|
|
170
|
+
// module_id, target — must be non-empty strings
|
|
171
|
+
return typeof value !== 'string' || value.length === 0;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Parse a field expected to be a mapping. When the value is present but is
|
|
175
|
+
* not a mapping (e.g. a string or array from user-edited YAML), emit a
|
|
176
|
+
* warning and fall back to an empty record so the malformed data does not
|
|
177
|
+
* silently persist through round-trip.
|
|
178
|
+
*
|
|
179
|
+
* Returned values are deep-cloned via ``structuredClone`` so later caller
|
|
180
|
+
* mutation of a ``ScannedModule.inputSchema/outputSchema/metadata`` cannot
|
|
181
|
+
* leak back into the parsed YAML source graph. Matches the Rust loader
|
|
182
|
+
* (``serde_json::Value.clone`` is deep) and the Python loader
|
|
183
|
+
* (``copy.deepcopy``).
|
|
184
|
+
*/
|
|
185
|
+
function asRecord(value, fieldName, moduleId) {
|
|
186
|
+
if (value == null)
|
|
187
|
+
return {};
|
|
188
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
189
|
+
const safe = {};
|
|
190
|
+
for (const [k, v] of Object.entries(value)) {
|
|
191
|
+
if (!PROTO_DENY.has(k))
|
|
192
|
+
safe[k] = v;
|
|
193
|
+
}
|
|
194
|
+
return structuredClone(safe);
|
|
195
|
+
}
|
|
196
|
+
console.warn(`BindingLoader: ${fieldName} for module ${moduleId} is not a dict (${typeof value}); using empty {}`);
|
|
197
|
+
return {};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Same as {@link asRecord}, but returns `null` for absent values
|
|
201
|
+
* (used for optional fields like `display`).
|
|
202
|
+
*/
|
|
203
|
+
function asRecordOrNull(value, fieldName, moduleId) {
|
|
204
|
+
if (value == null)
|
|
205
|
+
return null;
|
|
206
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
207
|
+
const src = value;
|
|
208
|
+
const filtered = {};
|
|
209
|
+
for (const [k, v] of Object.entries(src)) {
|
|
210
|
+
if (!PROTO_DENY.has(k))
|
|
211
|
+
filtered[k] = v;
|
|
212
|
+
}
|
|
213
|
+
return structuredClone(filtered);
|
|
214
|
+
}
|
|
215
|
+
console.warn(`BindingLoader: ${fieldName} for module ${moduleId} is not a dict (${typeof value}); treating as null`);
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
function asStringArray(value) {
|
|
219
|
+
if (!Array.isArray(value))
|
|
220
|
+
return [];
|
|
221
|
+
return value.filter((v) => typeof v === 'string');
|
|
222
|
+
}
|
|
223
|
+
function parseAnnotations(value, moduleId) {
|
|
224
|
+
if (value == null)
|
|
225
|
+
return null;
|
|
226
|
+
if (typeof value !== 'object' || Array.isArray(value)) {
|
|
227
|
+
console.warn(`BindingLoader: annotations for module ${moduleId} is not a dict; treating as null`);
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
return annotationsFromJSON(value);
|
|
232
|
+
}
|
|
233
|
+
catch (exc) {
|
|
234
|
+
console.warn(`BindingLoader: failed to parse annotations for module ${moduleId}: ${exc.message}; treating as null`);
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
function parseExamples(value, moduleId) {
|
|
239
|
+
if (value == null)
|
|
240
|
+
return [];
|
|
241
|
+
if (!Array.isArray(value)) {
|
|
242
|
+
console.warn(`BindingLoader: examples for module ${moduleId} is not a list; ignoring`);
|
|
243
|
+
return [];
|
|
244
|
+
}
|
|
245
|
+
const result = [];
|
|
246
|
+
value.forEach((ex, i) => {
|
|
247
|
+
if (ex == null || typeof ex !== 'object' || Array.isArray(ex)) {
|
|
248
|
+
console.warn(`BindingLoader: examples[${i}] of module ${moduleId} is not a dict; ignoring`);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
// Deep clone so caller mutation of the returned ScannedModule's
|
|
252
|
+
// examples cannot leak back into the parsed YAML source graph.
|
|
253
|
+
result.push(structuredClone(ex));
|
|
254
|
+
});
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=binding-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-parser.js","sourceRoot":"","sources":["../src/binding-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type { ScannedModule } from '../types.js';
|
|
2
|
+
export { createScannedModule, cloneModule } from '../types.js';
|
|
3
|
+
export { BaseScanner } from '../scanner.js';
|
|
4
|
+
export { SCANNER_VERB_MAP, hasPathParams, resolveHttpVerb, generateSuggestedAlias, extractPathParamNames, substitutePathParams, } from '../http-verb-map.js';
|
|
5
|
+
export { enrichSchemaDescriptions } from '../schema-utils.js';
|
|
6
|
+
export { resolveRef, resolveSchema, deepResolveRefs, extractInputSchema, extractOutputSchema, } from '../openapi.js';
|
|
7
|
+
export { annotationsToDict, moduleToDict, modulesToDicts, } from '../serializers.js';
|
|
8
|
+
export { toMarkdown } from '../formatting/index.js';
|
|
9
|
+
export { BindingParser, BindingLoadError, parseBindingDocument, } from '../binding-parser.js';
|
|
10
|
+
export type { BindingLoadOptions } from '../binding-parser.js';
|
|
11
|
+
export type { WriteResult, VerifyResult, Verifier } from '../output/types.js';
|
|
12
|
+
export { createWriteResult } from '../output/types.js';
|
|
13
|
+
export { WriteError, InvalidFormatError } from '../output/errors.js';
|
|
14
|
+
export { RegistryVerifier, runVerifierChain } from '../output/verify-core.js';
|
|
15
|
+
export { HTTPProxyRegistryWriter, HTTPProxyWriterError, } from '../output/http-proxy-writer.js';
|
|
16
|
+
export type { HTTPProxyRegistryWriterOptions, ProxyRegistry, } from '../output/http-proxy-writer.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAkBA,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOpD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAO9E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,8BAA8B,EAC9B,aAAa,GACd,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Browser-safe subset of apcore-toolkit.
|
|
2
|
+
//
|
|
3
|
+
// This entry point exposes only the symbols whose module load and runtime
|
|
4
|
+
// behavior do not depend on any Node.js built-in (`node:fs`, `node:path`,
|
|
5
|
+
// `node:module`, `process.*`). It is intended for consumers that bundle
|
|
6
|
+
// apcore-toolkit into a browser, edge runtime, or worker environment —
|
|
7
|
+
// e.g. tiptap-apcore.
|
|
8
|
+
//
|
|
9
|
+
// The default entry point (`apcore-toolkit`) continues to re-export the full
|
|
10
|
+
// Node-capable surface (file writers / readers, binding loader, display
|
|
11
|
+
// resolver, file verifiers, AI enhancer, VERSION) for tri-SDK parity with
|
|
12
|
+
// the Python and Rust toolkits. Do not add Node-only symbols here without
|
|
13
|
+
// an environment guard; doing so defeats the purpose of this subpath. A
|
|
14
|
+
// static check in `tests/browser-entry.test.ts` walks the transitive
|
|
15
|
+
// import graph from this file and fails if any Node-only reference leaks
|
|
16
|
+
// in.
|
|
17
|
+
export { createScannedModule, cloneModule } from '../types.js';
|
|
18
|
+
export { BaseScanner } from '../scanner.js';
|
|
19
|
+
// ---- HTTP verb mapping (pure) --------------------------------------------
|
|
20
|
+
export { SCANNER_VERB_MAP, hasPathParams, resolveHttpVerb, generateSuggestedAlias, extractPathParamNames, substitutePathParams, } from '../http-verb-map.js';
|
|
21
|
+
// ---- Schema / OpenAPI utilities (pure) -----------------------------------
|
|
22
|
+
export { enrichSchemaDescriptions } from '../schema-utils.js';
|
|
23
|
+
export { resolveRef, resolveSchema, deepResolveRefs, extractInputSchema, extractOutputSchema, } from '../openapi.js';
|
|
24
|
+
// ---- Serializers & formatting (pure) -------------------------------------
|
|
25
|
+
export { annotationsToDict, moduleToDict, modulesToDicts, } from '../serializers.js';
|
|
26
|
+
export { toMarkdown } from '../formatting/index.js';
|
|
27
|
+
// ---- Binding parsing (runtime-neutral half of BindingLoader) -------------
|
|
28
|
+
// `BindingLoader` itself stays Node-only (reads from disk). `BindingParser`
|
|
29
|
+
// is the superclass that owns the pure parsing logic; `parseBindingDocument`
|
|
30
|
+
// is the equivalent standalone function. Browser callers typically fetch a
|
|
31
|
+
// binding document then hand it off to one of these.
|
|
32
|
+
export { BindingParser, BindingLoadError, parseBindingDocument, } from '../binding-parser.js';
|
|
33
|
+
export { createWriteResult } from '../output/types.js';
|
|
34
|
+
export { WriteError, InvalidFormatError } from '../output/errors.js';
|
|
35
|
+
// ---- Runtime-neutral verifier primitives (pure) --------------------------
|
|
36
|
+
// File-based verifiers (`YAMLVerifier`, `SyntaxVerifier`, `MagicBytesVerifier`,
|
|
37
|
+
// `JSONVerifier`) live in `output/verifiers.ts` and stay Node-only because
|
|
38
|
+
// they read files off disk.
|
|
39
|
+
export { RegistryVerifier, runVerifierChain } from '../output/verify-core.js';
|
|
40
|
+
// ---- HTTP proxy writer (uses global fetch / AbortController, no Node APIs)
|
|
41
|
+
// Registers `ScannedModule[]` as HTTP-proxied modules in an in-memory
|
|
42
|
+
// registry — each module's `execute()` forwards inputs to a backend URL.
|
|
43
|
+
// Works in any environment where `fetch` is available (Node 20+, browsers,
|
|
44
|
+
// Deno, workers).
|
|
45
|
+
export { HTTPProxyRegistryWriter, HTTPProxyWriterError, } from '../output/http-proxy-writer.js';
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,yEAAyE;AACzE,MAAM;AAIN,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,6EAA6E;AAC7E,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,6EAA6E;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,6EAA6E;AAC7E,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,qDAAqD;AACrD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAErE,6EAA6E;AAC7E,gFAAgF;AAChF,2EAA2E;AAC3E,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,6EAA6E;AAC7E,sEAAsE;AACtE,yEAAyE;AACzE,2EAA2E;AAC3E,kBAAkB;AAClB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* travel through RegistryWriter into FunctionModule.metadata["display"],
|
|
10
10
|
* where CLI/MCP/A2A surfaces read them at render time.
|
|
11
11
|
*/
|
|
12
|
-
import type { ScannedModule } from '
|
|
12
|
+
import type { ScannedModule } from '../types.js';
|
|
13
13
|
/** Surface-specific resolved display fields. */
|
|
14
14
|
export interface SurfaceDisplay {
|
|
15
15
|
alias: string;
|
|
@@ -63,7 +63,19 @@ export declare class DisplayResolver {
|
|
|
63
63
|
private _buildBindingMap;
|
|
64
64
|
private _parseBindingData;
|
|
65
65
|
private _loadBindingFiles;
|
|
66
|
+
/**
|
|
67
|
+
* Resolve display fields for a single ScannedModule.
|
|
68
|
+
*
|
|
69
|
+
* `suggestedAlias` is read from two sources in priority order:
|
|
70
|
+
* 1. `mod.suggestedAlias` (top-level field, preferred)
|
|
71
|
+
* 2. `mod.metadata["suggested_alias"]` (legacy fallback)
|
|
72
|
+
*
|
|
73
|
+
* The top-level field takes precedence when set to a truthy value.
|
|
74
|
+
*/
|
|
75
|
+
private static _asStr;
|
|
76
|
+
private static _asObj;
|
|
77
|
+
private static _asStrArray;
|
|
66
78
|
private _resolveOne;
|
|
67
79
|
private _validateAliases;
|
|
68
80
|
}
|
|
69
|
-
//# sourceMappingURL=
|
|
81
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/display/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,cAAc,CAAC;CACrB;AAED,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAKD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,aAAa,EAAE;IA0BnF,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,iBAAiB;IAiDzB;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAIrB,OAAO,CAAC,MAAM,CAAC,MAAM;IAMrB,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B,OAAO,CAAC,WAAW;IAyEnB,OAAO,CAAC,gBAAgB;CAiCzB"}
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
import * as fs from 'node:fs';
|
|
13
13
|
import * as path from 'node:path';
|
|
14
14
|
import * as yaml from 'js-yaml';
|
|
15
|
-
import { cloneModule } from '
|
|
15
|
+
import { cloneModule } from '../types.js';
|
|
16
|
+
import { PROTO_DENY } from '../safe-keys.js';
|
|
16
17
|
const MCP_ALIAS_MAX = 64;
|
|
17
18
|
const MCP_ALIAS_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_-]*$/;
|
|
18
19
|
const CLI_ALIAS_PATTERN = /^[a-z][a-z0-9_-]*$/;
|
|
@@ -62,21 +63,30 @@ export class DisplayResolver {
|
|
|
62
63
|
return {};
|
|
63
64
|
}
|
|
64
65
|
_parseBindingData(data) {
|
|
65
|
-
// Accept either { bindings: [...] } or a direct moduleId → entry map
|
|
66
|
+
// Accept either { bindings: [...] } or a direct moduleId → entry map.
|
|
67
|
+
// Use Object.create(null) so that user-controlled keys like '__proto__'
|
|
68
|
+
// cannot pollute Object.prototype.
|
|
66
69
|
if ('bindings' in data) {
|
|
67
|
-
const
|
|
68
|
-
|
|
70
|
+
const rawBindings = data['bindings'];
|
|
71
|
+
if (!Array.isArray(rawBindings)) {
|
|
72
|
+
console.warn('DisplayResolver: bindings must be an array, got', typeof rawBindings);
|
|
73
|
+
return Object.create(null);
|
|
74
|
+
}
|
|
75
|
+
const bindings = rawBindings;
|
|
76
|
+
const result = Object.create(null);
|
|
69
77
|
for (const entry of bindings) {
|
|
70
78
|
const id = entry['module_id'];
|
|
71
|
-
if (id != null) {
|
|
79
|
+
if (id != null && !PROTO_DENY.has(id)) {
|
|
72
80
|
result[id] = entry;
|
|
73
81
|
}
|
|
74
82
|
}
|
|
75
83
|
return result;
|
|
76
84
|
}
|
|
77
85
|
// Already a map
|
|
78
|
-
const result =
|
|
86
|
+
const result = Object.create(null);
|
|
79
87
|
for (const [k, v] of Object.entries(data)) {
|
|
88
|
+
if (PROTO_DENY.has(k))
|
|
89
|
+
continue;
|
|
80
90
|
if (v != null && typeof v === 'object' && !Array.isArray(v)) {
|
|
81
91
|
result[k] = v;
|
|
82
92
|
}
|
|
@@ -84,7 +94,7 @@ export class DisplayResolver {
|
|
|
84
94
|
return result;
|
|
85
95
|
}
|
|
86
96
|
_loadBindingFiles(bindingPath) {
|
|
87
|
-
const result =
|
|
97
|
+
const result = Object.create(null);
|
|
88
98
|
let files = [];
|
|
89
99
|
try {
|
|
90
100
|
const stat = fs.statSync(bindingPath);
|
|
@@ -101,41 +111,85 @@ export class DisplayResolver {
|
|
|
101
111
|
}
|
|
102
112
|
catch {
|
|
103
113
|
console.warn(`DisplayResolver: binding path not found: ${bindingPath}`);
|
|
104
|
-
return
|
|
114
|
+
return Object.create(null);
|
|
105
115
|
}
|
|
106
116
|
for (const f of files) {
|
|
107
117
|
try {
|
|
108
|
-
const
|
|
118
|
+
const lstat = fs.lstatSync(f);
|
|
119
|
+
if (lstat.isSymbolicLink()) {
|
|
120
|
+
console.warn(`DisplayResolver: skipping symlink ${f}`);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (exc) {
|
|
125
|
+
console.warn(`DisplayResolver: failed to stat ${f}: ${exc}`);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
let content;
|
|
129
|
+
try {
|
|
130
|
+
content = fs.readFileSync(f, 'utf-8');
|
|
131
|
+
}
|
|
132
|
+
catch (exc) {
|
|
133
|
+
console.warn(`DisplayResolver: failed to read ${f}: ${exc}`);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
109
137
|
const data = yaml.load(content) ?? {};
|
|
110
138
|
Object.assign(result, this._parseBindingData(data));
|
|
111
139
|
}
|
|
112
140
|
catch (exc) {
|
|
113
|
-
console.warn(`DisplayResolver: failed to
|
|
141
|
+
console.warn(`DisplayResolver: failed to parse ${f}: ${exc}`);
|
|
114
142
|
}
|
|
115
143
|
}
|
|
116
144
|
return result;
|
|
117
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve display fields for a single ScannedModule.
|
|
148
|
+
*
|
|
149
|
+
* `suggestedAlias` is read from two sources in priority order:
|
|
150
|
+
* 1. `mod.suggestedAlias` (top-level field, preferred)
|
|
151
|
+
* 2. `mod.metadata["suggested_alias"]` (legacy fallback)
|
|
152
|
+
*
|
|
153
|
+
* The top-level field takes precedence when set to a truthy value.
|
|
154
|
+
*/
|
|
155
|
+
static _asStr(val) {
|
|
156
|
+
return typeof val === 'string' ? val : undefined;
|
|
157
|
+
}
|
|
158
|
+
static _asObj(val) {
|
|
159
|
+
return val !== null && typeof val === 'object' && !Array.isArray(val)
|
|
160
|
+
? val
|
|
161
|
+
: {};
|
|
162
|
+
}
|
|
163
|
+
static _asStrArray(val, fallback) {
|
|
164
|
+
if (Array.isArray(val))
|
|
165
|
+
return val.filter((v) => typeof v === 'string');
|
|
166
|
+
return [...fallback];
|
|
167
|
+
}
|
|
118
168
|
_resolveOne(mod, bindingMap) {
|
|
119
169
|
const entry = bindingMap[mod.moduleId] ?? {};
|
|
120
|
-
const displayCfg = entry['display']
|
|
121
|
-
const bindingDesc = entry['description'];
|
|
122
|
-
const bindingDocs = entry['documentation'];
|
|
123
|
-
const
|
|
170
|
+
const displayCfg = DisplayResolver._asObj(entry['display']);
|
|
171
|
+
const bindingDesc = DisplayResolver._asStr(entry['description']);
|
|
172
|
+
const bindingDocs = DisplayResolver._asStr(entry['documentation']);
|
|
173
|
+
const fieldAlias = mod.suggestedAlias ?? null;
|
|
174
|
+
const metaAlias = mod.metadata?.['suggested_alias'] ?? null;
|
|
175
|
+
const suggestedAlias = fieldAlias || metaAlias;
|
|
124
176
|
// -- Resolve cross-surface defaults --
|
|
125
|
-
const defaultAlias = displayCfg['alias'] || suggestedAlias || mod.moduleId;
|
|
126
|
-
const defaultDescription = displayCfg['description'] || bindingDesc || mod.description;
|
|
127
|
-
const defaultDocumentation = displayCfg['documentation']
|
|
128
|
-
const defaultGuidance = displayCfg['guidance']
|
|
129
|
-
const resolvedTags = displayCfg['tags']
|
|
177
|
+
const defaultAlias = DisplayResolver._asStr(displayCfg['alias']) || suggestedAlias || mod.moduleId;
|
|
178
|
+
const defaultDescription = DisplayResolver._asStr(displayCfg['description']) || bindingDesc || mod.description;
|
|
179
|
+
const defaultDocumentation = DisplayResolver._asStr(displayCfg['documentation']) ?? bindingDocs ?? mod.documentation ?? null;
|
|
180
|
+
const defaultGuidance = DisplayResolver._asStr(displayCfg['guidance']) ?? null;
|
|
181
|
+
const resolvedTags = displayCfg['tags'] !== undefined
|
|
182
|
+
? DisplayResolver._asStrArray(displayCfg['tags'], mod.tags)
|
|
183
|
+
: DisplayResolver._asStrArray(entry['tags'] !== undefined ? entry['tags'] : mod.tags, mod.tags);
|
|
130
184
|
// -- Resolve per-surface fields --
|
|
131
185
|
const resolveSurface = (key) => {
|
|
132
|
-
const sc = displayCfg[key]
|
|
133
|
-
const aliasExplicit = Boolean(sc['alias']);
|
|
186
|
+
const sc = DisplayResolver._asObj(displayCfg[key]);
|
|
187
|
+
const aliasExplicit = Boolean(DisplayResolver._asStr(sc['alias']));
|
|
134
188
|
return {
|
|
135
189
|
surface: {
|
|
136
|
-
alias: sc['alias'] || defaultAlias,
|
|
137
|
-
description: sc['description'] || defaultDescription,
|
|
138
|
-
guidance: sc['guidance']
|
|
190
|
+
alias: DisplayResolver._asStr(sc['alias']) || defaultAlias,
|
|
191
|
+
description: DisplayResolver._asStr(sc['description']) || defaultDescription,
|
|
192
|
+
guidance: DisplayResolver._asStr(sc['guidance']) ?? defaultGuidance,
|
|
139
193
|
},
|
|
140
194
|
aliasExplicit,
|
|
141
195
|
};
|
|
@@ -192,4 +246,4 @@ export class DisplayResolver {
|
|
|
192
246
|
}
|
|
193
247
|
}
|
|
194
248
|
}
|
|
195
|
-
//# sourceMappingURL=
|
|
249
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/display/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatting/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatting/markdown.ts"],"names":[],"mappings":"AAsOA,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,MAAM,CA+BR"}
|