apcore-js 0.14.1 → 0.15.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/README.md +136 -1
- package/dist/config.d.ts +74 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +422 -12
- package/dist/config.js.map +1 -1
- package/dist/error-formatter.d.ts +37 -0
- package/dist/error-formatter.d.ts.map +1 -0
- package/dist/error-formatter.js +51 -0
- package/dist/error-formatter.js.map +1 -0
- package/dist/errors.d.ts +30 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +48 -0
- package/dist/errors.js.map +1 -1
- package/dist/events/subscribers.d.ts +1 -1
- package/dist/events/subscribers.d.ts.map +1 -1
- package/dist/events/subscribers.js +4 -4
- package/dist/events/subscribers.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/platform-notify.d.ts.map +1 -1
- package/dist/middleware/platform-notify.js +4 -2
- package/dist/middleware/platform-notify.js.map +1 -1
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/control.js +15 -2
- package/dist/sys-modules/control.js.map +1 -1
- package/dist/sys-modules/registration.d.ts +1 -1
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +40 -9
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/toggle.js +6 -2
- package/dist/sys-modules/toggle.js.map +1 -1
- package/package.json +1 -1
package/dist/config.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration loading, validation, and environment variable overrides (Algorithm A12).
|
|
3
|
+
* Supports legacy mode (flat YAML) and namespace mode (apcore top-level key).
|
|
3
4
|
*/
|
|
4
5
|
import yaml from 'js-yaml';
|
|
5
|
-
import { ConfigError, ConfigNotFoundError } from './errors.js';
|
|
6
|
+
import { ConfigError, ConfigNotFoundError, ConfigNamespaceDuplicateError, ConfigNamespaceReservedError, ConfigEnvPrefixConflictError, ConfigMountError, ConfigBindError, } from './errors.js';
|
|
6
7
|
// Lazy-load Node.js built-in modules for browser compatibility
|
|
7
8
|
let _nodeFs = null;
|
|
8
9
|
try {
|
|
@@ -14,9 +15,19 @@ try {
|
|
|
14
15
|
_nodeProcess = await import('node:process');
|
|
15
16
|
}
|
|
16
17
|
catch { /* browser environment */ }
|
|
17
|
-
|
|
18
|
+
let _nodePath = null;
|
|
19
|
+
try {
|
|
20
|
+
_nodePath = await import('node:path');
|
|
21
|
+
}
|
|
22
|
+
catch { /* browser environment */ }
|
|
23
|
+
let _nodeOs = null;
|
|
24
|
+
try {
|
|
25
|
+
_nodeOs = await import('node:os');
|
|
26
|
+
}
|
|
27
|
+
catch { /* browser environment */ }
|
|
28
|
+
/** Environment variable prefix for legacy overrides. */
|
|
18
29
|
const ENV_PREFIX = 'APCORE_';
|
|
19
|
-
/** Required configuration fields (dot-paths). */
|
|
30
|
+
/** Required configuration fields in legacy mode (dot-paths). */
|
|
20
31
|
const REQUIRED_FIELDS = [
|
|
21
32
|
'version',
|
|
22
33
|
'extensions.root',
|
|
@@ -25,7 +36,7 @@ const REQUIRED_FIELDS = [
|
|
|
25
36
|
'acl.default_effect',
|
|
26
37
|
'project.name',
|
|
27
38
|
];
|
|
28
|
-
/** Field constraints: field -> [validator, errorMessage]. */
|
|
39
|
+
/** Field constraints in legacy mode: field -> [validator, errorMessage]. */
|
|
29
40
|
const CONSTRAINTS = {
|
|
30
41
|
'acl.default_effect': [
|
|
31
42
|
(v) => v === 'allow' || v === 'deny',
|
|
@@ -56,7 +67,7 @@ const CONSTRAINTS = {
|
|
|
56
67
|
'must be a positive integer',
|
|
57
68
|
],
|
|
58
69
|
};
|
|
59
|
-
/** Default configuration values. */
|
|
70
|
+
/** Default configuration values for legacy mode. */
|
|
60
71
|
const DEFAULTS = {
|
|
61
72
|
version: '0.8.0',
|
|
62
73
|
extensions: {
|
|
@@ -93,6 +104,14 @@ const DEFAULTS = {
|
|
|
93
104
|
name: 'apcore',
|
|
94
105
|
},
|
|
95
106
|
};
|
|
107
|
+
const _globalNsRegistry = new Map();
|
|
108
|
+
const _RESERVED_NAMESPACES = new Set(['apcore', '_config']);
|
|
109
|
+
const _envPrefixUsed = new Set();
|
|
110
|
+
/** Pattern that matches the APCORE_[A-Z0-9] reservation rule. */
|
|
111
|
+
const APCORE_ENV_RESERVED_RE = /^APCORE_[A-Z0-9]/;
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
// Utility helpers
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
96
115
|
function deepMergeDicts(base, override) {
|
|
97
116
|
const result = { ...base };
|
|
98
117
|
for (const [key, value] of Object.entries(override)) {
|
|
@@ -159,23 +178,187 @@ function applyEnvOverrides(data) {
|
|
|
159
178
|
}
|
|
160
179
|
return result;
|
|
161
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Apply per-namespace env overrides using longest-prefix-match dispatch.
|
|
183
|
+
*
|
|
184
|
+
* For each env var, finds the registered namespace whose envPrefix is the
|
|
185
|
+
* longest matching prefix, strips it, converts separators, and writes to
|
|
186
|
+
* that namespace's subtree in data.
|
|
187
|
+
*/
|
|
188
|
+
function applyNamespaceEnvOverrides(data) {
|
|
189
|
+
const result = JSON.parse(JSON.stringify(data));
|
|
190
|
+
const env = _nodeProcess?.env ?? {};
|
|
191
|
+
// Sort registrations by envPrefix length descending (longest first)
|
|
192
|
+
const registrations = Array.from(_globalNsRegistry.values())
|
|
193
|
+
.filter((r) => r.envPrefix !== null)
|
|
194
|
+
.sort((a, b) => (b.envPrefix.length) - (a.envPrefix.length));
|
|
195
|
+
for (const [envKey, envValue] of Object.entries(env)) {
|
|
196
|
+
if (envValue === undefined)
|
|
197
|
+
continue;
|
|
198
|
+
for (const reg of registrations) {
|
|
199
|
+
if (envKey.startsWith(reg.envPrefix)) {
|
|
200
|
+
const suffix = envKey.slice(reg.envPrefix.length);
|
|
201
|
+
if (!suffix)
|
|
202
|
+
continue;
|
|
203
|
+
// Strip leading separator (single _ or __)
|
|
204
|
+
const stripped = suffix.startsWith('__') ? suffix.slice(2) : suffix.startsWith('_') ? suffix.slice(1) : suffix;
|
|
205
|
+
if (!stripped)
|
|
206
|
+
continue;
|
|
207
|
+
// Convert: double __ -> literal _, single _ -> .
|
|
208
|
+
const dotPath = stripped.toLowerCase().replace(/__/g, '\x00').replace(/_/g, '.').replace(/\x00/g, '_');
|
|
209
|
+
// Ensure namespace subtree exists
|
|
210
|
+
if (typeof result[reg.name] !== 'object' || result[reg.name] === null) {
|
|
211
|
+
result[reg.name] = {};
|
|
212
|
+
}
|
|
213
|
+
setNested(result[reg.name], dotPath, coerceEnvValue(envValue));
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Resolve the namespace from a dot-path like "apcore-mcp.transport".
|
|
222
|
+
* The namespace portion may contain hyphens, so we cannot simply split on ".".
|
|
223
|
+
* We match against known registered namespaces (longest match first).
|
|
224
|
+
*/
|
|
225
|
+
function resolveNamespacePath(key) {
|
|
226
|
+
// Sort known namespaces by length descending for longest-match
|
|
227
|
+
const knownNamespaces = Array.from(_globalNsRegistry.keys())
|
|
228
|
+
.concat(Array.from(_RESERVED_NAMESPACES))
|
|
229
|
+
.sort((a, b) => b.length - a.length);
|
|
230
|
+
for (const ns of knownNamespaces) {
|
|
231
|
+
if (key === ns) {
|
|
232
|
+
return { namespace: ns, subPath: '' };
|
|
233
|
+
}
|
|
234
|
+
if (key.startsWith(ns + '.')) {
|
|
235
|
+
return { namespace: ns, subPath: key.slice(ns.length + 1) };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Fallback: use naive first-segment split
|
|
239
|
+
const dotIndex = key.indexOf('.');
|
|
240
|
+
if (dotIndex === -1) {
|
|
241
|
+
return { namespace: key, subPath: '' };
|
|
242
|
+
}
|
|
243
|
+
return { namespace: key.slice(0, dotIndex), subPath: key.slice(dotIndex + 1) };
|
|
244
|
+
}
|
|
245
|
+
// ---------------------------------------------------------------------------
|
|
246
|
+
// Config discovery (§9.14)
|
|
247
|
+
// ---------------------------------------------------------------------------
|
|
248
|
+
/**
|
|
249
|
+
* Search for a config file in the standard discovery order (§9.14).
|
|
250
|
+
* Returns the path of the first found file, or null if none found.
|
|
251
|
+
*/
|
|
252
|
+
export function discoverConfigFile() {
|
|
253
|
+
const env = _nodeProcess?.env ?? {};
|
|
254
|
+
const existsSync = _nodeFs?.existsSync;
|
|
255
|
+
const join = _nodePath?.join;
|
|
256
|
+
const homedir = _nodeOs?.homedir;
|
|
257
|
+
if (!existsSync || !join || !homedir)
|
|
258
|
+
return null;
|
|
259
|
+
const envPath = env['APCORE_CONFIG_FILE'];
|
|
260
|
+
if (envPath)
|
|
261
|
+
return envPath;
|
|
262
|
+
const cwdCandidates = ['project.yaml', 'project.yml', 'apcore.yaml', 'apcore.yml'];
|
|
263
|
+
for (const name of cwdCandidates) {
|
|
264
|
+
if (existsSync(name))
|
|
265
|
+
return name;
|
|
266
|
+
}
|
|
267
|
+
const home = homedir();
|
|
268
|
+
// W-10: Use lazy-loaded _nodeProcess so this works in non-Node environments.
|
|
269
|
+
const xdgConfig = (_nodeProcess?.platform ?? 'linux') === 'darwin'
|
|
270
|
+
? join(home, 'Library', 'Application Support', 'apcore', 'config.yaml')
|
|
271
|
+
: join(home, '.config', 'apcore', 'config.yaml');
|
|
272
|
+
if (existsSync(xdgConfig))
|
|
273
|
+
return xdgConfig;
|
|
274
|
+
const legacy = join(home, '.apcore', 'config.yaml');
|
|
275
|
+
if (existsSync(legacy))
|
|
276
|
+
return legacy;
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
// ---------------------------------------------------------------------------
|
|
280
|
+
// Config class
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
162
282
|
/**
|
|
163
283
|
* Configuration system with YAML loading, env overrides, and validation.
|
|
164
284
|
*
|
|
165
|
-
* Merge priority (highest wins): environment variables > config file > defaults.
|
|
285
|
+
* Merge priority (highest wins): environment variables > mount data > config file > namespace defaults > defaults.
|
|
286
|
+
*
|
|
287
|
+
* Two modes:
|
|
288
|
+
* - Legacy mode: top-level YAML has no "apcore" key. Backward compatible.
|
|
289
|
+
* - Namespace mode: top-level YAML has "apcore" key. Enables namespace features.
|
|
166
290
|
*
|
|
167
291
|
* Backward compatible: `new Config(data)` still works for in-memory configuration.
|
|
168
292
|
*/
|
|
169
293
|
export class Config {
|
|
170
294
|
_data;
|
|
171
295
|
_yamlPath = null;
|
|
296
|
+
_mode = 'legacy';
|
|
297
|
+
_mounts = new Map();
|
|
172
298
|
constructor(data) {
|
|
173
299
|
this._data = data ?? {};
|
|
174
300
|
}
|
|
301
|
+
// -------------------------------------------------------------------------
|
|
302
|
+
// Static namespace registry methods
|
|
303
|
+
// -------------------------------------------------------------------------
|
|
304
|
+
/**
|
|
305
|
+
* Register a namespace globally.
|
|
306
|
+
*
|
|
307
|
+
* Throws:
|
|
308
|
+
* - ConfigNamespaceReservedError if name is in the reserved set.
|
|
309
|
+
* - ConfigNamespaceDuplicateError if name is already registered.
|
|
310
|
+
* - ConfigEnvPrefixConflictError if envPrefix is already used or matches the
|
|
311
|
+
* APCORE_[A-Z0-9] pattern.
|
|
312
|
+
*/
|
|
313
|
+
static registerNamespace(options) {
|
|
314
|
+
const { name, schema = null, envPrefix = null, defaults = null } = options;
|
|
315
|
+
if (_RESERVED_NAMESPACES.has(name)) {
|
|
316
|
+
throw new ConfigNamespaceReservedError(name);
|
|
317
|
+
}
|
|
318
|
+
if (_globalNsRegistry.has(name)) {
|
|
319
|
+
throw new ConfigNamespaceDuplicateError(name);
|
|
320
|
+
}
|
|
321
|
+
if (envPrefix !== null) {
|
|
322
|
+
if (_envPrefixUsed.has(envPrefix) || APCORE_ENV_RESERVED_RE.test(envPrefix)) {
|
|
323
|
+
throw new ConfigEnvPrefixConflictError(envPrefix);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
_globalNsRegistry.set(name, { name, schema, envPrefix, defaults });
|
|
327
|
+
if (envPrefix !== null) {
|
|
328
|
+
_envPrefixUsed.add(envPrefix);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Return a snapshot of all registered namespaces.
|
|
333
|
+
*/
|
|
334
|
+
static registeredNamespaces() {
|
|
335
|
+
return Array.from(_globalNsRegistry.values()).map((r) => ({
|
|
336
|
+
name: r.name,
|
|
337
|
+
envPrefix: r.envPrefix,
|
|
338
|
+
hasSchema: r.schema !== null,
|
|
339
|
+
}));
|
|
340
|
+
}
|
|
341
|
+
// -------------------------------------------------------------------------
|
|
342
|
+
// Static factory methods
|
|
343
|
+
// -------------------------------------------------------------------------
|
|
175
344
|
/**
|
|
176
345
|
* Load configuration from a YAML file with env overrides.
|
|
346
|
+
*
|
|
347
|
+
* Auto-detects mode:
|
|
348
|
+
* - Namespace mode: top-level "apcore" key present.
|
|
349
|
+
* - Legacy mode: otherwise (backward compatible).
|
|
177
350
|
*/
|
|
178
351
|
static load(yamlPath, options) {
|
|
352
|
+
if (yamlPath === undefined || yamlPath === null) {
|
|
353
|
+
const found = discoverConfigFile();
|
|
354
|
+
if (found === null)
|
|
355
|
+
return Config.fromDefaults();
|
|
356
|
+
yamlPath = found;
|
|
357
|
+
}
|
|
358
|
+
// C-5: Guard against non-Node environments where fs may not be available.
|
|
359
|
+
if (_nodeFs === null) {
|
|
360
|
+
throw new ConfigError(`Cannot load config file '${yamlPath}': filesystem not available`);
|
|
361
|
+
}
|
|
179
362
|
const { existsSync, readFileSync } = _nodeFs;
|
|
180
363
|
if (!existsSync(yamlPath)) {
|
|
181
364
|
throw new ConfigNotFoundError(yamlPath);
|
|
@@ -196,10 +379,35 @@ export class Config {
|
|
|
196
379
|
if (typeof fileData !== 'object' || Array.isArray(fileData)) {
|
|
197
380
|
throw new ConfigError(`Config file must be a mapping, got ${typeof fileData}`);
|
|
198
381
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const
|
|
382
|
+
const rawData = fileData;
|
|
383
|
+
// Namespace mode requires "apcore" key to be an object/mapping — not null, scalar, or array.
|
|
384
|
+
const apcoreValue = rawData['apcore'];
|
|
385
|
+
const isNamespaceMode = apcoreValue !== null && apcoreValue !== undefined &&
|
|
386
|
+
typeof apcoreValue === 'object' && !Array.isArray(apcoreValue);
|
|
387
|
+
let config;
|
|
388
|
+
if (isNamespaceMode) {
|
|
389
|
+
// Namespace mode: apply namespace defaults, file data, then env overrides
|
|
390
|
+
let merged = {};
|
|
391
|
+
// Apply namespace defaults first
|
|
392
|
+
for (const reg of _globalNsRegistry.values()) {
|
|
393
|
+
if (reg.defaults !== null) {
|
|
394
|
+
merged[reg.name] = JSON.parse(JSON.stringify(reg.defaults));
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Merge file data over defaults
|
|
398
|
+
merged = deepMergeDicts(merged, rawData);
|
|
399
|
+
// Apply namespace-aware env overrides
|
|
400
|
+
merged = applyNamespaceEnvOverrides(merged);
|
|
401
|
+
config = new Config(merged);
|
|
402
|
+
config._mode = 'namespace';
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
// Legacy mode: merge defaults < file < env
|
|
406
|
+
let merged = deepMergeDicts(DEFAULTS, rawData);
|
|
407
|
+
merged = applyEnvOverrides(merged);
|
|
408
|
+
config = new Config(merged);
|
|
409
|
+
config._mode = 'legacy';
|
|
410
|
+
}
|
|
203
411
|
config._yamlPath = yamlPath;
|
|
204
412
|
if (options?.validate !== false) {
|
|
205
413
|
config.validate();
|
|
@@ -211,25 +419,153 @@ export class Config {
|
|
|
211
419
|
const data = applyEnvOverrides({ ...DEFAULTS });
|
|
212
420
|
return new Config(data);
|
|
213
421
|
}
|
|
422
|
+
// -------------------------------------------------------------------------
|
|
423
|
+
// Instance methods
|
|
424
|
+
// -------------------------------------------------------------------------
|
|
214
425
|
/** Get a configuration value by dot-path key. */
|
|
215
426
|
get(key, defaultValue) {
|
|
427
|
+
if (this._mode === 'namespace') {
|
|
428
|
+
const resolved = resolveNamespacePath(key);
|
|
429
|
+
if (resolved === null)
|
|
430
|
+
return defaultValue;
|
|
431
|
+
const nsData = this._data[resolved.namespace];
|
|
432
|
+
if (nsData === undefined || nsData === null)
|
|
433
|
+
return defaultValue;
|
|
434
|
+
if (!resolved.subPath)
|
|
435
|
+
return nsData;
|
|
436
|
+
return getNested(nsData, resolved.subPath, defaultValue);
|
|
437
|
+
}
|
|
216
438
|
return getNested(this._data, key, defaultValue);
|
|
217
439
|
}
|
|
218
440
|
/** Set a configuration value by dot-path key. */
|
|
219
441
|
set(key, value) {
|
|
442
|
+
if (this._mode === 'namespace') {
|
|
443
|
+
const resolved = resolveNamespacePath(key);
|
|
444
|
+
if (resolved === null) {
|
|
445
|
+
setNested(this._data, key, value);
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
if (!resolved.subPath) {
|
|
449
|
+
this._data[resolved.namespace] = value;
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
if (typeof this._data[resolved.namespace] !== 'object' || this._data[resolved.namespace] === null) {
|
|
453
|
+
this._data[resolved.namespace] = {};
|
|
454
|
+
}
|
|
455
|
+
setNested(this._data[resolved.namespace], resolved.subPath, value);
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
220
458
|
setNested(this._data, key, value);
|
|
221
459
|
}
|
|
222
460
|
/** Return a deep copy of the raw config data. */
|
|
223
461
|
get data() {
|
|
224
462
|
return JSON.parse(JSON.stringify(this._data));
|
|
225
463
|
}
|
|
464
|
+
/** Return the detected mode: 'legacy' or 'namespace'. */
|
|
465
|
+
get mode() {
|
|
466
|
+
return this._mode;
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Attach external config data to a namespace.
|
|
470
|
+
*
|
|
471
|
+
* Exactly one of fromFile or fromDict must be provided.
|
|
472
|
+
* Throws ConfigMountError if namespace is "_config" or file not found.
|
|
473
|
+
*/
|
|
474
|
+
mount(namespace, options) {
|
|
475
|
+
if (namespace === '_config') {
|
|
476
|
+
throw new ConfigMountError("Cannot mount to reserved namespace '_config'");
|
|
477
|
+
}
|
|
478
|
+
const { fromFile, fromDict } = options;
|
|
479
|
+
const hasFile = fromFile !== undefined;
|
|
480
|
+
const hasDict = fromDict !== undefined;
|
|
481
|
+
if (hasFile && hasDict) {
|
|
482
|
+
throw new ConfigMountError("Specify exactly one of 'fromFile' or 'fromDict', not both");
|
|
483
|
+
}
|
|
484
|
+
if (!hasFile && !hasDict) {
|
|
485
|
+
throw new ConfigMountError("One of 'fromFile' or 'fromDict' is required");
|
|
486
|
+
}
|
|
487
|
+
let mountData;
|
|
488
|
+
if (hasFile) {
|
|
489
|
+
if (_nodeFs === null) {
|
|
490
|
+
throw new ConfigMountError('Cannot mount from file: filesystem not available');
|
|
491
|
+
}
|
|
492
|
+
const { existsSync, readFileSync } = _nodeFs;
|
|
493
|
+
if (!existsSync(fromFile)) {
|
|
494
|
+
throw new ConfigMountError(`Mount file not found: ${fromFile}`);
|
|
495
|
+
}
|
|
496
|
+
let parsed;
|
|
497
|
+
try {
|
|
498
|
+
const content = readFileSync(fromFile, 'utf-8');
|
|
499
|
+
parsed = yaml.load(content);
|
|
500
|
+
}
|
|
501
|
+
catch (e) {
|
|
502
|
+
throw new ConfigMountError(`Failed to parse mount file '${fromFile}': ${e}`);
|
|
503
|
+
}
|
|
504
|
+
if (parsed === null || parsed === undefined) {
|
|
505
|
+
parsed = {};
|
|
506
|
+
}
|
|
507
|
+
if (typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
508
|
+
throw new ConfigMountError(`Mount file must be a YAML mapping: ${fromFile}`);
|
|
509
|
+
}
|
|
510
|
+
mountData = parsed;
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
mountData = fromDict;
|
|
514
|
+
}
|
|
515
|
+
this._mounts.set(namespace, mountData);
|
|
516
|
+
// Merge mount data into namespace subtree
|
|
517
|
+
const existing = (this._data[namespace] ?? {});
|
|
518
|
+
this._data[namespace] = deepMergeDicts(existing, mountData);
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Return a deep copy of a namespace subtree.
|
|
522
|
+
*/
|
|
523
|
+
namespace(name) {
|
|
524
|
+
const subtree = this._data[name];
|
|
525
|
+
if (subtree === undefined || subtree === null) {
|
|
526
|
+
return {};
|
|
527
|
+
}
|
|
528
|
+
return JSON.parse(JSON.stringify(subtree));
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Typed get with coercion and validation.
|
|
532
|
+
* Applies the coerce function to the raw value and returns the result.
|
|
533
|
+
* Throws ConfigError if the raw value is undefined.
|
|
534
|
+
*/
|
|
535
|
+
getTyped(path, coerce) {
|
|
536
|
+
const value = this.get(path);
|
|
537
|
+
if (value === undefined) {
|
|
538
|
+
throw new ConfigError(`Missing required config path: '${path}'`);
|
|
539
|
+
}
|
|
540
|
+
return coerce(value);
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Deserialize a namespace subtree into a class instance.
|
|
544
|
+
* The schema constructor receives the namespace data as a plain object.
|
|
545
|
+
* Throws ConfigBindError if instantiation fails.
|
|
546
|
+
*/
|
|
547
|
+
bind(namespace, schema) {
|
|
548
|
+
const data = this.namespace(namespace);
|
|
549
|
+
try {
|
|
550
|
+
return new schema(data);
|
|
551
|
+
}
|
|
552
|
+
catch (e) {
|
|
553
|
+
throw new ConfigBindError(`Failed to bind namespace '${namespace}': ${e}`);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
226
556
|
/**
|
|
227
557
|
* Validate the configuration per Algorithm A12.
|
|
228
558
|
*
|
|
229
|
-
*
|
|
559
|
+
* In legacy mode: checks required fields, type constraints, and semantic rules.
|
|
560
|
+
* In namespace mode (A12-NS): validates data.apcore; throws on unknown namespaces
|
|
561
|
+
* if strict mode is enabled via data._config.strict.
|
|
230
562
|
* Collects all errors before raising.
|
|
231
563
|
*/
|
|
232
564
|
validate() {
|
|
565
|
+
if (this._mode === 'namespace') {
|
|
566
|
+
this._validateNamespaceMode();
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
233
569
|
const errors = [];
|
|
234
570
|
// 1. Required field check
|
|
235
571
|
for (const field of REQUIRED_FIELDS) {
|
|
@@ -250,16 +586,90 @@ export class Config {
|
|
|
250
586
|
errors.map((e) => ` - ${e}`).join('\n'));
|
|
251
587
|
}
|
|
252
588
|
}
|
|
589
|
+
_validateNamespaceMode() {
|
|
590
|
+
const apcore = this._data['apcore'];
|
|
591
|
+
if (apcore !== undefined && apcore !== null) {
|
|
592
|
+
// Run A12 checks on data.apcore subtree
|
|
593
|
+
const errors = [];
|
|
594
|
+
const apcoreData = apcore;
|
|
595
|
+
for (const [field, [checkFn, errMsg]] of Object.entries(CONSTRAINTS)) {
|
|
596
|
+
const value = getNested(apcoreData, field);
|
|
597
|
+
if (value !== undefined && value !== null && !checkFn(value)) {
|
|
598
|
+
errors.push(`Invalid value for 'apcore.${field}': ${errMsg} (got ${JSON.stringify(value)})`);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
if (errors.length > 0) {
|
|
602
|
+
throw new ConfigError(`Configuration validation failed (${errors.length} error(s)):\n` +
|
|
603
|
+
errors.map((e) => ` - ${e}`).join('\n'));
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
// Strict mode: reject unknown namespaces
|
|
607
|
+
const configMeta = this._data['_config'];
|
|
608
|
+
const isStrict = configMeta !== null && typeof configMeta === 'object' &&
|
|
609
|
+
configMeta['strict'] === true;
|
|
610
|
+
if (isStrict) {
|
|
611
|
+
const knownKeys = new Set([
|
|
612
|
+
...Array.from(_globalNsRegistry.keys()),
|
|
613
|
+
'apcore',
|
|
614
|
+
'_config',
|
|
615
|
+
]);
|
|
616
|
+
for (const key of Object.keys(this._data)) {
|
|
617
|
+
if (!knownKeys.has(key)) {
|
|
618
|
+
throw new ConfigError(`Unknown namespace '${key}' in strict mode`);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
253
623
|
/**
|
|
254
624
|
* Re-read configuration from the original YAML file.
|
|
255
625
|
* Only works if the Config was created via Config.load().
|
|
626
|
+
* In namespace mode, re-applies namespace defaults, env overrides, and mount data.
|
|
256
627
|
*/
|
|
257
628
|
reload() {
|
|
258
629
|
if (this._yamlPath === null) {
|
|
259
630
|
throw new ConfigError('Cannot reload: Config was not loaded from a YAML file');
|
|
260
631
|
}
|
|
261
|
-
const
|
|
632
|
+
const previousMounts = new Map(this._mounts);
|
|
633
|
+
const reloaded = Config.load(this._yamlPath, { validate: false });
|
|
262
634
|
this._data = reloaded._data;
|
|
635
|
+
this._mode = reloaded._mode;
|
|
636
|
+
this._mounts = new Map();
|
|
637
|
+
// Re-apply mounts
|
|
638
|
+
for (const [namespace, mountData] of previousMounts) {
|
|
639
|
+
this.mount(namespace, { fromDict: mountData });
|
|
640
|
+
}
|
|
641
|
+
// Re-apply namespace env overrides in namespace mode
|
|
642
|
+
if (this._mode === 'namespace') {
|
|
643
|
+
this._data = applyNamespaceEnvOverrides(this._data);
|
|
644
|
+
}
|
|
263
645
|
}
|
|
264
646
|
}
|
|
647
|
+
// ---------------------------------------------------------------------------
|
|
648
|
+
// Bootstrap: register apcore built-in namespaces (§9.15)
|
|
649
|
+
// ---------------------------------------------------------------------------
|
|
650
|
+
// W-13: Use snake_case keys to match Python defaults and YAML config conventions.
|
|
651
|
+
// camelCase keys would silently diverge from cross-language YAML configs.
|
|
652
|
+
Config.registerNamespace({
|
|
653
|
+
name: 'observability',
|
|
654
|
+
envPrefix: 'APCORE__OBSERVABILITY',
|
|
655
|
+
defaults: {
|
|
656
|
+
tracing: { enabled: false, strategy: 'full', sampling_rate: 1.0, exporter: 'stdout', otlp_endpoint: null },
|
|
657
|
+
metrics: { enabled: false, exporter: 'stdout' },
|
|
658
|
+
logging: { enabled: true, level: 'info', format: 'json', redact_sensitive: true },
|
|
659
|
+
error_history: { max_entries_per_module: 50, max_total_entries: 1000 },
|
|
660
|
+
platform_notify: { enabled: false, error_rate_threshold: 0.1, latency_p99_threshold_ms: 5000.0 },
|
|
661
|
+
},
|
|
662
|
+
});
|
|
663
|
+
Config.registerNamespace({
|
|
664
|
+
name: 'sys_modules',
|
|
665
|
+
envPrefix: 'APCORE__SYS',
|
|
666
|
+
defaults: {
|
|
667
|
+
enabled: true,
|
|
668
|
+
health: { enabled: true },
|
|
669
|
+
manifest: { enabled: true },
|
|
670
|
+
usage: { enabled: true, retention_hours: 168, bucketing_strategy: 'hourly' },
|
|
671
|
+
control: { enabled: true },
|
|
672
|
+
events: { enabled: true, thresholds: { error_rate: 0.1, latency_p99_ms: 5000.0 } },
|
|
673
|
+
},
|
|
674
|
+
});
|
|
265
675
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ErrorFormatterRegistry -- per-adapter error formatting (§8.8).
|
|
3
|
+
*
|
|
4
|
+
* Allows adapters to register custom formatters that transform ModuleErrors
|
|
5
|
+
* into adapter-specific output shapes. Falls back to error.toJSON() when no
|
|
6
|
+
* formatter is registered for the given adapter.
|
|
7
|
+
*/
|
|
8
|
+
import { ModuleError } from './errors.js';
|
|
9
|
+
export interface ErrorFormatter {
|
|
10
|
+
format(error: ModuleError, context?: unknown): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare class ErrorFormatterRegistry {
|
|
13
|
+
private static readonly _registry;
|
|
14
|
+
/**
|
|
15
|
+
* Register a formatter for the given adapter name.
|
|
16
|
+
* Throws ErrorFormatterDuplicateError if a formatter is already registered.
|
|
17
|
+
*/
|
|
18
|
+
static register(adapterName: string, formatter: ErrorFormatter): void;
|
|
19
|
+
/**
|
|
20
|
+
* Retrieve the registered formatter for an adapter, or undefined if none.
|
|
21
|
+
*/
|
|
22
|
+
static get(adapterName: string): ErrorFormatter | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Format an error using the registered formatter for the given adapter.
|
|
25
|
+
* Falls back to error.toJSON() if no formatter is registered.
|
|
26
|
+
*/
|
|
27
|
+
static format(adapterName: string, error: ModuleError, context?: unknown): Record<string, unknown>;
|
|
28
|
+
/**
|
|
29
|
+
* Remove a registered formatter. Used primarily in tests.
|
|
30
|
+
*/
|
|
31
|
+
static unregister(adapterName: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Clear all registered formatters. Used primarily in tests.
|
|
34
|
+
*/
|
|
35
|
+
static clear(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=error-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-formatter.d.ts","sourceRoot":"","sources":["../src/error-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxE;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAEtE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAOrE;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3D;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQlG;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAGrB"}
|