apcore-js 0.19.0 → 0.20.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 +110 -9
- package/dist/acl.d.ts +18 -0
- package/dist/acl.d.ts.map +1 -1
- package/dist/acl.js +54 -17
- package/dist/acl.js.map +1 -1
- package/dist/async-task.d.ts +70 -16
- package/dist/async-task.d.ts.map +1 -1
- package/dist/async-task.js +212 -72
- package/dist/async-task.js.map +1 -1
- package/dist/builtin-steps.d.ts +16 -5
- package/dist/builtin-steps.d.ts.map +1 -1
- package/dist/builtin-steps.js +45 -28
- package/dist/builtin-steps.js.map +1 -1
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +163 -33
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +12 -1
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +32 -10
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +55 -16
- package/dist/errors.js.map +1 -1
- package/dist/events/circuit-breaker.d.ts +45 -0
- package/dist/events/circuit-breaker.d.ts.map +1 -0
- package/dist/events/circuit-breaker.js +115 -0
- package/dist/events/circuit-breaker.js.map +1 -0
- package/dist/events/emitter.d.ts +22 -1
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +66 -2
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/index.d.ts +4 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +3 -2
- package/dist/events/index.js.map +1 -1
- package/dist/events/subscribers.d.ts +33 -1
- package/dist/events/subscribers.d.ts.map +1 -1
- package/dist/events/subscribers.js +124 -1
- package/dist/events/subscribers.js.map +1 -1
- package/dist/executor.d.ts +10 -2
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +134 -51
- package/dist/executor.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +35 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -17
- package/dist/index.js.map +1 -1
- package/dist/middleware/base.d.ts +25 -3
- package/dist/middleware/base.d.ts.map +1 -1
- package/dist/middleware/base.js +24 -0
- package/dist/middleware/base.js.map +1 -1
- package/dist/middleware/circuit-breaker.d.ts +54 -0
- package/dist/middleware/circuit-breaker.d.ts.map +1 -0
- package/dist/middleware/circuit-breaker.js +168 -0
- package/dist/middleware/circuit-breaker.js.map +1 -0
- package/dist/middleware/context-namespace.d.ts +30 -0
- package/dist/middleware/context-namespace.d.ts.map +1 -0
- package/dist/middleware/context-namespace.js +38 -0
- package/dist/middleware/context-namespace.js.map +1 -0
- package/dist/middleware/index.d.ts +7 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +4 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/manager.d.ts +11 -4
- package/dist/middleware/manager.d.ts.map +1 -1
- package/dist/middleware/manager.js +25 -9
- package/dist/middleware/manager.js.map +1 -1
- package/dist/middleware/platform-notify.d.ts +8 -4
- package/dist/middleware/platform-notify.d.ts.map +1 -1
- package/dist/middleware/platform-notify.js +11 -7
- package/dist/middleware/platform-notify.js.map +1 -1
- package/dist/middleware/tracing.d.ts +50 -0
- package/dist/middleware/tracing.d.ts.map +1 -0
- package/dist/middleware/tracing.js +89 -0
- package/dist/middleware/tracing.js.map +1 -0
- package/dist/observability/batch-span-processor.d.ts +48 -0
- package/dist/observability/batch-span-processor.d.ts.map +1 -0
- package/dist/observability/batch-span-processor.js +89 -0
- package/dist/observability/batch-span-processor.js.map +1 -0
- package/dist/observability/context-logger.d.ts +54 -1
- package/dist/observability/context-logger.d.ts.map +1 -1
- package/dist/observability/context-logger.js +270 -6
- package/dist/observability/context-logger.js.map +1 -1
- package/dist/observability/error-history.d.ts +36 -7
- package/dist/observability/error-history.d.ts.map +1 -1
- package/dist/observability/error-history.js +169 -50
- package/dist/observability/error-history.js.map +1 -1
- package/dist/observability/index.d.ts +16 -5
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +8 -3
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/metrics.d.ts +14 -1
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +23 -2
- package/dist/observability/metrics.js.map +1 -1
- package/dist/observability/prometheus-exporter.d.ts +37 -0
- package/dist/observability/prometheus-exporter.d.ts.map +1 -0
- package/dist/observability/prometheus-exporter.js +135 -0
- package/dist/observability/prometheus-exporter.js.map +1 -0
- package/dist/observability/storage.d.ts +43 -0
- package/dist/observability/storage.d.ts.map +1 -0
- package/dist/observability/storage.js +58 -0
- package/dist/observability/storage.js.map +1 -0
- package/dist/observability/store.d.ts +29 -0
- package/dist/observability/store.d.ts.map +1 -0
- package/dist/observability/store.js +36 -0
- package/dist/observability/store.js.map +1 -0
- package/dist/observability/usage-exporter.d.ts +58 -0
- package/dist/observability/usage-exporter.d.ts.map +1 -0
- package/dist/observability/usage-exporter.js +86 -0
- package/dist/observability/usage-exporter.js.map +1 -0
- package/dist/observability/usage.d.ts +18 -1
- package/dist/observability/usage.d.ts.map +1 -1
- package/dist/observability/usage.js +25 -3
- package/dist/observability/usage.js.map +1 -1
- package/dist/pipeline-config.d.ts +11 -0
- package/dist/pipeline-config.d.ts.map +1 -1
- package/dist/pipeline-config.js +36 -10
- package/dist/pipeline-config.js.map +1 -1
- package/dist/pipeline.d.ts +123 -2
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +249 -50
- package/dist/pipeline.js.map +1 -1
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -0
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/multi-class.d.ts +57 -0
- package/dist/registry/multi-class.d.ts.map +1 -0
- package/dist/registry/multi-class.js +120 -0
- package/dist/registry/multi-class.js.map +1 -0
- package/dist/registry/registry.d.ts +91 -3
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +181 -11
- package/dist/registry/registry.js.map +1 -1
- package/dist/schema/constants.d.ts +9 -0
- package/dist/schema/constants.d.ts.map +1 -0
- package/dist/schema/constants.js +9 -0
- package/dist/schema/constants.js.map +1 -0
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/loader.d.ts +27 -3
- package/dist/schema/loader.d.ts.map +1 -1
- package/dist/schema/loader.js +137 -32
- package/dist/schema/loader.js.map +1 -1
- package/dist/schema/types.d.ts +4 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js.map +1 -1
- package/dist/schema/validator.d.ts +9 -0
- package/dist/schema/validator.d.ts.map +1 -1
- package/dist/schema/validator.js +153 -4
- package/dist/schema/validator.js.map +1 -1
- package/dist/sys-modules/audit.d.ts +50 -0
- package/dist/sys-modules/audit.d.ts.map +1 -0
- package/dist/sys-modules/audit.js +89 -0
- package/dist/sys-modules/audit.js.map +1 -0
- package/dist/sys-modules/control.d.ts +32 -4
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/control.js +196 -25
- package/dist/sys-modules/control.js.map +1 -1
- package/dist/sys-modules/index.d.ts +7 -2
- package/dist/sys-modules/index.d.ts.map +1 -1
- package/dist/sys-modules/index.js +3 -1
- package/dist/sys-modules/index.js.map +1 -1
- package/dist/sys-modules/overrides.d.ts +58 -0
- package/dist/sys-modules/overrides.d.ts.map +1 -0
- package/dist/sys-modules/overrides.js +106 -0
- package/dist/sys-modules/overrides.js.map +1 -0
- package/dist/sys-modules/registration.d.ts +17 -12
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +115 -23
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts +7 -2
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/toggle.js +61 -5
- package/dist/sys-modules/toggle.js.map +1 -1
- package/dist/trace-context.d.ts +47 -9
- package/dist/trace-context.d.ts.map +1 -1
- package/dist/trace-context.js +139 -16
- package/dist/trace-context.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../src/sys-modules/registration.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../src/sys-modules/registration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAkB,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AA+C5E,KAAK,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,eAAe,CAAC;AAyD9E,yEAAyE;AACzE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAEN;AAED,sDAAsD;AACtD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAK/D;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAU3F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAC5C,IAAI,CAwBN;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAC1C,OAAO,CAAC,EAAE,yBAAyB,GAClC,iBAAiB,CAmJnB"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-registration of sys.* modules and middleware from config.
|
|
3
3
|
*/
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as yaml from 'js-yaml';
|
|
6
|
+
import { SysModuleRegistrationError } from '../errors.js';
|
|
4
7
|
import { ErrorHistory } from '../observability/error-history.js';
|
|
5
8
|
import { ErrorHistoryMiddleware } from '../middleware/error-history.js';
|
|
6
9
|
import { UsageCollector, UsageMiddleware } from '../observability/usage.js';
|
|
7
|
-
import { EventEmitter,
|
|
8
|
-
import { WebhookSubscriber, A2ASubscriber } from '../events/subscribers.js';
|
|
10
|
+
import { EventEmitter, emitWithLegacy } from '../events/emitter.js';
|
|
11
|
+
import { WebhookSubscriber, A2ASubscriber, FileSubscriber, StdoutSubscriber, FilterSubscriber } from '../events/subscribers.js';
|
|
9
12
|
import { PlatformNotifyMiddleware } from '../middleware/platform-notify.js';
|
|
10
13
|
import { HealthSummaryModule, HealthModule } from './health.js';
|
|
11
14
|
import { ManifestFullModule, ManifestModule } from './manifest.js';
|
|
@@ -56,34 +59,70 @@ function _registerBuiltInFactories() {
|
|
|
56
59
|
const timeoutMs = config['timeout_ms'];
|
|
57
60
|
return new A2ASubscriber(platformUrl, auth, timeoutMs);
|
|
58
61
|
});
|
|
62
|
+
_subscriberFactories.set('file', (config) => {
|
|
63
|
+
const path = config['path'];
|
|
64
|
+
if (typeof path !== 'string' || path.length === 0) {
|
|
65
|
+
throw new Error(`file subscriber requires a non-empty "path" string field`);
|
|
66
|
+
}
|
|
67
|
+
const append = config['append'];
|
|
68
|
+
const format = config['format'];
|
|
69
|
+
const rotateBytes = config['rotate_bytes'];
|
|
70
|
+
return new FileSubscriber(path, append, format, rotateBytes);
|
|
71
|
+
});
|
|
72
|
+
_subscriberFactories.set('stdout', (config) => {
|
|
73
|
+
const format = config['format'];
|
|
74
|
+
const levelFilter = config['level_filter'];
|
|
75
|
+
return new StdoutSubscriber(format, levelFilter);
|
|
76
|
+
});
|
|
77
|
+
_subscriberFactories.set('filter', (config) => {
|
|
78
|
+
const delegateType = config['delegate_type'];
|
|
79
|
+
if (typeof delegateType !== 'string') {
|
|
80
|
+
throw new Error(`filter subscriber requires a "delegate_type" string field`);
|
|
81
|
+
}
|
|
82
|
+
const delegateConfig = (config['delegate_config'] ?? {});
|
|
83
|
+
const delegateFactory = _subscriberFactories.get(delegateType);
|
|
84
|
+
if (delegateFactory === undefined) {
|
|
85
|
+
throw new Error(`Unknown delegate subscriber type '${delegateType}' for filter subscriber`);
|
|
86
|
+
}
|
|
87
|
+
const delegate = delegateFactory(delegateConfig);
|
|
88
|
+
const includeEvents = config['include_events'];
|
|
89
|
+
const excludeEvents = config['exclude_events'];
|
|
90
|
+
return new FilterSubscriber(delegate, includeEvents, excludeEvents);
|
|
91
|
+
});
|
|
59
92
|
}
|
|
60
93
|
// Register built-in factories on module load
|
|
61
94
|
_registerBuiltInFactories();
|
|
62
|
-
/**
|
|
63
|
-
* @deprecated Internal use only. This function is not part of the public API
|
|
64
|
-
* and will be removed in a future release. Use the built-in webhook and a2a
|
|
65
|
-
* subscriber types, or contact the maintainers to add a new built-in type.
|
|
66
|
-
*/
|
|
95
|
+
/** Register a custom subscriber type for config-driven instantiation. */
|
|
67
96
|
export function registerSubscriberType(typeName, factory) {
|
|
68
97
|
_subscriberFactories.set(typeName, factory);
|
|
69
98
|
}
|
|
70
|
-
/**
|
|
71
|
-
* @deprecated Internal use only. See {@link registerSubscriberType}.
|
|
72
|
-
*/
|
|
99
|
+
/** Remove a previously registered subscriber type. */
|
|
73
100
|
export function unregisterSubscriberType(typeName) {
|
|
74
101
|
if (!_subscriberFactories.has(typeName)) {
|
|
75
102
|
throw new Error(`Subscriber type '${typeName}' is not registered`);
|
|
76
103
|
}
|
|
77
104
|
_subscriberFactories.delete(typeName);
|
|
78
105
|
}
|
|
79
|
-
/**
|
|
80
|
-
* @deprecated Internal use only. Intended for test teardown only.
|
|
81
|
-
* See {@link registerSubscriberType}.
|
|
82
|
-
*/
|
|
106
|
+
/** Reset the registry to built-in types only. Intended for test teardown. */
|
|
83
107
|
export function resetSubscriberRegistry() {
|
|
84
108
|
_subscriberFactories.clear();
|
|
85
109
|
_registerBuiltInFactories();
|
|
86
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Instantiate a single subscriber from a config object.
|
|
113
|
+
* The `type` field selects the factory; all other fields are passed as config.
|
|
114
|
+
*/
|
|
115
|
+
export function createSubscriberFromConfig(config) {
|
|
116
|
+
const typeName = config['type'];
|
|
117
|
+
if (typeof typeName !== 'string') {
|
|
118
|
+
throw new Error('Subscriber config missing "type" field');
|
|
119
|
+
}
|
|
120
|
+
const factory = _subscriberFactories.get(typeName);
|
|
121
|
+
if (factory === undefined) {
|
|
122
|
+
throw new Error(`Unknown subscriber type '${typeName}'`);
|
|
123
|
+
}
|
|
124
|
+
return factory(config);
|
|
125
|
+
}
|
|
87
126
|
/**
|
|
88
127
|
* Instantiate subscribers from config and subscribe them to the emitter.
|
|
89
128
|
*/
|
|
@@ -112,17 +151,54 @@ export function _instantiateSubscribers(config, eventEmitter, sysCfg = null) {
|
|
|
112
151
|
/**
|
|
113
152
|
* Auto-register all sys.* modules and middleware based on config.
|
|
114
153
|
*/
|
|
115
|
-
export function registerSysModules(registry, executor, config, metricsCollector) {
|
|
154
|
+
export function registerSysModules(registry, executor, config, metricsCollector, options) {
|
|
116
155
|
const result = {};
|
|
156
|
+
const failOnError = options?.failOnError ?? false;
|
|
157
|
+
const overridesPath = options?.overridesPath ?? null;
|
|
158
|
+
const overridesStore = options?.overridesStore ?? null;
|
|
159
|
+
const auditStore = options?.auditStore ?? null;
|
|
117
160
|
// §9.15.3: prefer config.namespace('sys_modules') in namespace mode
|
|
118
161
|
const sysCfg = _resolveSysCfg(config);
|
|
119
162
|
if (!_cfgGet(sysCfg, config, 'enabled', false)) {
|
|
120
163
|
return result;
|
|
121
164
|
}
|
|
165
|
+
// Load overrides file and apply after base config
|
|
166
|
+
if (overridesPath !== null && fs.existsSync(overridesPath)) {
|
|
167
|
+
try {
|
|
168
|
+
const content = fs.readFileSync(overridesPath, 'utf-8');
|
|
169
|
+
const parsed = yaml.load(content);
|
|
170
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
171
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
172
|
+
config.set(key, value);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
console.warn('[apcore:sys-modules] Failed to load overrides file:', err);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Apply overrides from the OverridesStore (Issue #45.1) — async stores are
|
|
181
|
+
// not supported here; if `load()` returns a Promise we log and skip.
|
|
182
|
+
if (overridesStore !== null) {
|
|
183
|
+
try {
|
|
184
|
+
const loaded = overridesStore.load();
|
|
185
|
+
if (loaded !== null && typeof loaded.then === 'function') {
|
|
186
|
+
console.warn('[apcore:sys-modules] OverridesStore.load() returned a Promise; async stores cannot be applied during synchronous registerSysModules. Pre-load and inject into Config directly.');
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
for (const [key, value] of Object.entries(loaded)) {
|
|
190
|
+
config.set(key, value);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
console.warn('[apcore:sys-modules] Failed to load overrides from OverridesStore:', err);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
122
198
|
// Error history
|
|
123
199
|
const maxPerModule = Number(_cfgGet(sysCfg, config, 'error_history.max_entries_per_module', 50));
|
|
124
200
|
const maxTotal = Number(_cfgGet(sysCfg, config, 'error_history.max_total_entries', 1000));
|
|
125
|
-
const errorHistory = new ErrorHistory(maxPerModule, maxTotal);
|
|
201
|
+
const errorHistory = new ErrorHistory({ maxEntriesPerModule: maxPerModule, maxTotalEntries: maxTotal });
|
|
126
202
|
result.errorHistory = errorHistory;
|
|
127
203
|
const ehMiddleware = new ErrorHistoryMiddleware(errorHistory);
|
|
128
204
|
executor.use(ehMiddleware);
|
|
@@ -135,7 +211,16 @@ export function registerSysModules(registry, executor, config, metricsCollector)
|
|
|
135
211
|
result.usageMiddleware = usageMiddleware;
|
|
136
212
|
// Register sys modules via registerInternal to bypass reserved-word checks
|
|
137
213
|
const reg = (id, mod) => {
|
|
138
|
-
|
|
214
|
+
try {
|
|
215
|
+
registry.registerInternal(id, mod);
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
const cause = err instanceof Error ? err : new Error(String(err));
|
|
219
|
+
if (failOnError) {
|
|
220
|
+
throw new SysModuleRegistrationError(id, cause);
|
|
221
|
+
}
|
|
222
|
+
console.error(`[apcore:sys-modules] Failed to register system module '${id}':`, err);
|
|
223
|
+
}
|
|
139
224
|
};
|
|
140
225
|
// Health modules
|
|
141
226
|
reg('system.health.summary', new HealthSummaryModule(registry, metricsCollector ?? null, errorHistory, config));
|
|
@@ -159,15 +244,22 @@ export function registerSysModules(registry, executor, config, metricsCollector)
|
|
|
159
244
|
executor.use(pnMiddleware);
|
|
160
245
|
result.platformNotifyMiddleware = pnMiddleware;
|
|
161
246
|
// Control modules (require EventEmitter)
|
|
162
|
-
reg('system.control.toggle_feature', new ToggleFeatureModule(registry, eventEmitter));
|
|
163
|
-
reg('system.control.update_config', new UpdateConfigModule(config, eventEmitter
|
|
164
|
-
|
|
165
|
-
|
|
247
|
+
reg('system.control.toggle_feature', new ToggleFeatureModule(registry, eventEmitter, undefined, auditStore ?? undefined, overridesStore ?? undefined));
|
|
248
|
+
reg('system.control.update_config', new UpdateConfigModule(config, eventEmitter, {
|
|
249
|
+
auditStore: auditStore ?? undefined,
|
|
250
|
+
overridesPath: overridesPath ?? undefined,
|
|
251
|
+
overridesStore: overridesStore ?? undefined,
|
|
252
|
+
}));
|
|
253
|
+
reg('system.control.reload_module', new ReloadModule(registry, eventEmitter, auditStore ?? undefined));
|
|
254
|
+
// Bridge registry events.
|
|
255
|
+
// §Issue #36: emit canonical apcore.registry.* names and legacy aliases
|
|
256
|
+
// (with deprecated: true) during the deprecation window. Once the legacy
|
|
257
|
+
// names are removed, drop the emitWithLegacy() wrapper for direct emit().
|
|
166
258
|
registry.on('register', (moduleId) => {
|
|
167
|
-
eventEmitter.
|
|
259
|
+
emitWithLegacy(eventEmitter, 'apcore.registry.module_registered', 'module_registered', moduleId, 'info', {});
|
|
168
260
|
});
|
|
169
261
|
registry.on('unregister', (moduleId) => {
|
|
170
|
-
eventEmitter.
|
|
262
|
+
emitWithLegacy(eventEmitter, 'apcore.registry.module_unregistered', 'module_unregistered', moduleId, 'info', {});
|
|
171
263
|
});
|
|
172
264
|
}
|
|
173
265
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/sys-modules/registration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/sys-modules/registration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAOhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChI,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,oFAAoF;AACpF,SAAS,cAAc,CAAC,MAAc;IACpC,kFAAkF;IAClF,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAQ,MAAM,CAAC,SAAS,CAAC,aAAa,CAA6B,IAAI,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAA6B,EAAE,SAAiB,EAAE,YAAqB;IACzF,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,YAAY,CAAC;QACzE,MAAM,GAAG,GAAG,OAAkC,CAAC;QAC/C,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACvC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CACd,MAAsC,EACtC,MAAc,EACd,MAAc,EACd,YAAqB;IAErB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAQD,MAAM,oBAAoB,GAAmC,IAAI,GAAG,EAAE,CAAC;AAEvE,SAAS,yBAAyB;IAChC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAA+B,EAAmB,EAAE;QACvF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAuC,CAAC;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAuB,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAuB,CAAC;QAC7D,OAAO,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAA+B,EAAmB,EAAE;QACnF,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAW,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAgD,CAAC;QAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAuB,CAAC;QAC7D,OAAO,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAA+B,EAAmB,EAAE;QACpF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAwB,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAuB,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAuB,CAAC;QACjE,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAA+B,EAAmB,EAAE;QACtF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAuB,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAuB,CAAC;QACjE,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAA+B,EAAmB,EAAE;QACtF,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAA4B,CAAC;QACpF,MAAM,eAAe,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,yBAAyB,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAyB,CAAC;QACvE,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAyB,CAAC;QACvE,OAAO,IAAI,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,yBAAyB,EAAE,CAAC;AAE5B,yEAAyE;AACzE,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,OAA0B;IAE1B,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,qBAAqB,CAAC,CAAC;IACrE,CAAC;IACD,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,uBAAuB;IACrC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC7B,yBAAyB,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAA+B;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAuB,CAAC;IACtD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,YAA0B,EAC1B,SAAyC,IAAI;IAE7C,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,CAClC,CAAC;IAEzC,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAuB,CAAC;QAChE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,kDAAkD,CAAC,CAAC;YACpF,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,4BAA4B,QAAQ,aAAa,CAAC,CAAC;YACnF,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC7C,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,wCAAwC,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;AACH,CAAC;AAmBD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,QAAkB,EAClB,MAAc,EACd,gBAA0C,EAC1C,OAAmC;IAEnC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,KAAK,CAAC;IAClD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;IACrD,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IAE/C,oEAAoE;IACpE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kDAAkD;IAClD,IAAI,aAAa,KAAK,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;oBAC7E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,qEAAqE;IACrE,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAQ,MAA6B,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjF,OAAO,CAAC,IAAI,CACV,gLAAgL,CACjL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;oBAC7E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oEAAoE,EAAE,GAAG,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,sCAAsC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,iCAAiC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxG,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IAEnC,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9D,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3B,MAAM,CAAC,sBAAsB,GAAG,YAAY,CAAC;IAE7C,iBAAiB;IACjB,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9B,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IAEzC,2EAA2E;IAC3E,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,GAAY,EAAQ,EAAE;QAC7C,IAAI,CAAC;YACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC;IAEF,iBAAiB;IACjB,GAAG,CAAC,uBAAuB,EAAE,IAAI,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAChH,GAAG,CAAC,sBAAsB,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEhG,mBAAmB;IACnB,GAAG,CAAC,wBAAwB,EAAE,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,GAAG,CAAC,sBAAsB,EAAE,IAAI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtE,gBAAgB;IAChB,GAAG,CAAC,sBAAsB,EAAE,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;IACpE,GAAG,CAAC,qBAAqB,EAAE,IAAI,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAEtE,gBAAgB;IAChB,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QAEnC,4BAA4B;QAC5B,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAEtD,2BAA2B;QAC3B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAC;QAChG,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,kCAAkC,EAAE,IAAI,CAAC,CAAC,CAAC;QACtG,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,YAAY,EAAE,gBAAgB,IAAI,IAAI,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;QACnI,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3B,MAAM,CAAC,wBAAwB,GAAG,YAAY,CAAC;QAE/C,yCAAyC;QACzC,GAAG,CAAC,+BAA+B,EAAE,IAAI,mBAAmB,CAC1D,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,UAAU,IAAI,SAAS,EACvB,cAAc,IAAI,SAAS,CAC5B,CAAC,CAAC;QACH,GAAG,CAAC,8BAA8B,EAAE,IAAI,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE;YAC/E,UAAU,EAAE,UAAU,IAAI,SAAS;YACnC,aAAa,EAAE,aAAa,IAAI,SAAS;YACzC,cAAc,EAAE,cAAc,IAAI,SAAS;SAC5C,CAAC,CAAC,CAAC;QACJ,GAAG,CAAC,8BAA8B,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC;QAEvG,0BAA0B;QAC1B,wEAAwE;QACxE,yEAAyE;QACzE,0EAA0E;QAC1E,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE;YAC3C,cAAc,CACZ,YAAY,EACZ,mCAAmC,EACnC,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,QAAgB,EAAE,EAAE;YAC7C,cAAc,CACZ,YAAY,EACZ,qCAAqC,EACrC,qBAAqB,EACrB,QAAQ,EACR,MAAM,EACN,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { Registry } from '../registry/registry.js';
|
|
10
10
|
import type { EventEmitter } from '../events/emitter.js';
|
|
11
|
+
import type { AuditStore } from './audit.js';
|
|
12
|
+
import type { OverridesStore } from './overrides.js';
|
|
11
13
|
/**
|
|
12
14
|
* Toggle state container. Tracks which modules are disabled.
|
|
13
15
|
* State survives module reload since it lives outside the Registry.
|
|
@@ -84,8 +86,11 @@ export declare class ToggleFeatureModule {
|
|
|
84
86
|
private readonly _registry;
|
|
85
87
|
private readonly _emitter;
|
|
86
88
|
private readonly _toggleState;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
private readonly _auditStore;
|
|
90
|
+
private readonly _overridesStore;
|
|
91
|
+
constructor(registry: Registry, eventEmitter: EventEmitter, toggleState?: ToggleState, auditStore?: AuditStore, overridesStore?: OverridesStore);
|
|
92
|
+
execute(inputs: Record<string, unknown>, context: unknown): Record<string, unknown>;
|
|
93
|
+
private _persistToggleOverride;
|
|
89
94
|
private _validateInputs;
|
|
90
95
|
}
|
|
91
96
|
//# sourceMappingURL=toggle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../src/sys-modules/toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAEpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9B,KAAK,IAAI,IAAI;CAGd;AAED,mCAAmC;AACnC,eAAO,MAAM,oBAAoB,aAAoB,CAAC;AAEtD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,WAAW,qDAAqD;IACzE,QAAQ,CAAC,WAAW;;;;;;;;;;;;MAAoO;IACxP,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;MAQlB;IACF,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;MAQnB;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;
|
|
1
|
+
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../src/sys-modules/toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAEpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9B,KAAK,IAAI,IAAI;CAGd;AAED,mCAAmC;AACnC,eAAO,MAAM,oBAAoB,aAAoB,CAAC;AAEtD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,WAAW,qDAAqD;IACzE,QAAQ,CAAC,WAAW;;;;;;;;;;;;MAAoO;IACxP,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;MAQlB;IACF,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;MAQnB;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;gBAGtD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,UAAU,EACvB,cAAc,CAAC,EAAE,cAAc;IASjC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0CnF,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,eAAe;CAexB"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { InvalidInputError, ModuleNotFoundError, ModuleDisabledError } from '../errors.js';
|
|
10
10
|
import { createEvent } from '../events/emitter.js';
|
|
11
|
+
import { buildAuditEntry, extractAuditIdentity } from './audit.js';
|
|
11
12
|
/**
|
|
12
13
|
* Toggle state container. Tracks which modules are disabled.
|
|
13
14
|
* State survives module reload since it lives outside the Registry.
|
|
@@ -68,27 +69,82 @@ export class ToggleFeatureModule {
|
|
|
68
69
|
_registry;
|
|
69
70
|
_emitter;
|
|
70
71
|
_toggleState;
|
|
71
|
-
|
|
72
|
+
_auditStore;
|
|
73
|
+
_overridesStore;
|
|
74
|
+
constructor(registry, eventEmitter, toggleState, auditStore, overridesStore) {
|
|
72
75
|
this._registry = registry;
|
|
73
76
|
this._emitter = eventEmitter;
|
|
74
77
|
this._toggleState = toggleState ?? DEFAULT_TOGGLE_STATE;
|
|
78
|
+
this._auditStore = auditStore ?? null;
|
|
79
|
+
this._overridesStore = overridesStore ?? null;
|
|
75
80
|
}
|
|
76
|
-
execute(inputs,
|
|
81
|
+
execute(inputs, context) {
|
|
77
82
|
const { moduleId, enabled, reason } = this._validateInputs(inputs);
|
|
83
|
+
const ctx = context;
|
|
78
84
|
if (!this._registry.has(moduleId)) {
|
|
79
85
|
throw new ModuleNotFoundError(moduleId);
|
|
80
86
|
}
|
|
87
|
+
const before = !this._toggleState.isDisabled(moduleId);
|
|
81
88
|
if (enabled) {
|
|
82
89
|
this._toggleState.enable(moduleId);
|
|
83
90
|
}
|
|
84
91
|
else {
|
|
85
92
|
this._toggleState.disable(moduleId);
|
|
86
93
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
const entry = buildAuditEntry('toggle_feature', moduleId, ctx, { before, after: enabled });
|
|
95
|
+
if (this._auditStore !== null) {
|
|
96
|
+
this._auditStore.append(entry);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.warn(`[apcore:audit] toggle_feature ${moduleId} actor=${entry.actorId} before=${before} after=${enabled} reason=${reason}`);
|
|
100
|
+
}
|
|
101
|
+
// W-12: Event payload carries `enabled` (Python parity) plus requester
|
|
102
|
+
// identity per Issue #45.2 so subscribers can attribute the toggle. The
|
|
103
|
+
// `reason` field is returned in the module output but not in the event.
|
|
104
|
+
const { caller_id, identity } = extractAuditIdentity(ctx);
|
|
105
|
+
const toggledPayload = {
|
|
106
|
+
module_id: moduleId,
|
|
107
|
+
enabled,
|
|
108
|
+
caller_id,
|
|
109
|
+
};
|
|
110
|
+
if (identity !== null)
|
|
111
|
+
toggledPayload['identity'] = identity;
|
|
112
|
+
this._emitter.emit(createEvent('apcore.module.toggled', moduleId, 'info', toggledPayload));
|
|
113
|
+
console.warn(`[apcore:control] Feature toggled: module_id=${moduleId} enabled=${enabled} reason=${reason}`);
|
|
114
|
+
if (this._overridesStore !== null) {
|
|
115
|
+
this._persistToggleOverride(moduleId, enabled);
|
|
116
|
+
}
|
|
90
117
|
return { success: true, module_id: moduleId, enabled };
|
|
91
118
|
}
|
|
119
|
+
_persistToggleOverride(moduleId, enabled) {
|
|
120
|
+
const store = this._overridesStore;
|
|
121
|
+
const overrideKey = `toggle.${moduleId}`;
|
|
122
|
+
try {
|
|
123
|
+
const loaded = store.load();
|
|
124
|
+
if (loaded !== null && typeof loaded.then === 'function') {
|
|
125
|
+
loaded
|
|
126
|
+
.then((existing) => {
|
|
127
|
+
existing[overrideKey] = enabled;
|
|
128
|
+
return store.save(existing);
|
|
129
|
+
})
|
|
130
|
+
.catch((err) => {
|
|
131
|
+
console.warn(`[apcore:control] Failed to persist toggle override for '${moduleId}':`, err);
|
|
132
|
+
});
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const existing = loaded;
|
|
136
|
+
existing[overrideKey] = enabled;
|
|
137
|
+
const saveResult = store.save(existing);
|
|
138
|
+
if (saveResult !== undefined && typeof saveResult.then === 'function') {
|
|
139
|
+
saveResult.catch((err) => {
|
|
140
|
+
console.warn(`[apcore:control] Failed to persist toggle override for '${moduleId}':`, err);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
console.warn(`[apcore:control] Failed to persist toggle override for '${moduleId}':`, err);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
92
148
|
_validateInputs(inputs) {
|
|
93
149
|
const moduleId = inputs['module_id'];
|
|
94
150
|
if (typeof moduleId !== 'string' || !moduleId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../src/sys-modules/toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG3F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../src/sys-modules/toggle.ts"],"names":[],"mappings":"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"}
|
package/dist/trace-context.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* W3C Trace Context support: TraceParent parsing and TraceContext
|
|
2
|
+
* W3C Trace Context support: TraceParent + tracestate parsing and TraceContext
|
|
3
|
+
* injection/extraction.
|
|
3
4
|
*/
|
|
4
5
|
import type { Context } from './context.js';
|
|
5
6
|
export interface TraceParent {
|
|
@@ -7,22 +8,41 @@ export interface TraceParent {
|
|
|
7
8
|
readonly traceId: string;
|
|
8
9
|
readonly parentId: string;
|
|
9
10
|
readonly traceFlags: string;
|
|
11
|
+
/** Parsed `tracestate` entries. Empty array when the header is absent. */
|
|
12
|
+
readonly tracestate: ReadonlyArray<readonly [string, string]>;
|
|
10
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Headers container the extractor accepts. Plain dict, fetch `Headers`, or `Map`.
|
|
16
|
+
*
|
|
17
|
+
* For plain objects, lookup folds keys to lowercase. For `Headers`, the platform
|
|
18
|
+
* already performs case-insensitive matching. For `Map`, lookup folds keys.
|
|
19
|
+
*/
|
|
20
|
+
export type HeadersLike = Record<string, unknown> | Headers | Map<string, string>;
|
|
11
21
|
export declare class TraceContext {
|
|
12
22
|
/**
|
|
13
|
-
* Build
|
|
23
|
+
* Build outbound trace headers from an apcore Context.
|
|
24
|
+
*
|
|
25
|
+
* Behavior:
|
|
26
|
+
* - Uses `context.traceId` (already 32-hex) as the traceparent trace_id.
|
|
27
|
+
* - When `parentId` is supplied it is used verbatim and MUST match `^[0-9a-f]{16}$`;
|
|
28
|
+
* otherwise the last span on the tracing stack provides the id, falling back
|
|
29
|
+
* to a fresh random 16-hex value.
|
|
30
|
+
* - When the Context carries an inbound TraceParent under
|
|
31
|
+
* `data['_apcore.trace.inbound']`, its `traceFlags` and `tracestate` are
|
|
32
|
+
* propagated; otherwise traceFlags defaults to `"01"` (sampled) for new roots.
|
|
14
33
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
34
|
+
* @param context apcore Context
|
|
35
|
+
* @param parentId optional 16-hex parent id override
|
|
36
|
+
* @throws {Error} if `parentId` is provided but malformed
|
|
18
37
|
*/
|
|
19
|
-
static inject(context: Context): Record<string, string>;
|
|
38
|
+
static inject(context: Context, parentId?: string): Record<string, string>;
|
|
20
39
|
/**
|
|
21
|
-
* Parse the `traceparent` header from
|
|
40
|
+
* Parse the `traceparent` (and optional `tracestate`) header from a header
|
|
41
|
+
* container, performing case-insensitive header name lookup.
|
|
22
42
|
*
|
|
23
|
-
* Returns `null` if the header is missing or malformed.
|
|
43
|
+
* Returns `null` if the traceparent header is missing or malformed.
|
|
24
44
|
*/
|
|
25
|
-
static extract(headers:
|
|
45
|
+
static extract(headers: HeadersLike): TraceParent | null;
|
|
26
46
|
/**
|
|
27
47
|
* Strictly parse a traceparent string, throwing on invalid format.
|
|
28
48
|
*
|
|
@@ -30,5 +50,23 @@ export declare class TraceContext {
|
|
|
30
50
|
* `00-<32 hex>-<16 hex>-<2 hex>` format.
|
|
31
51
|
*/
|
|
32
52
|
static fromTraceparent(traceparent: string): TraceParent;
|
|
53
|
+
/**
|
|
54
|
+
* Parse a W3C `tracestate` header value.
|
|
55
|
+
*
|
|
56
|
+
* Splits on commas, trims each member, and accepts only entries shaped as
|
|
57
|
+
* `key=value` (the value may contain `=`). Malformed members are dropped
|
|
58
|
+
* silently. The list is truncated to {@link MAX_TRACESTATE_ENTRIES} (32).
|
|
59
|
+
*/
|
|
60
|
+
static parseTracestate(raw: string): Array<[string, string]>;
|
|
61
|
+
/**
|
|
62
|
+
* Format tracestate entries to a comma-separated header value.
|
|
63
|
+
*/
|
|
64
|
+
static formatTracestate(entries: ReadonlyArray<readonly [string, string]>): string;
|
|
65
|
+
/**
|
|
66
|
+
* Case-insensitive header lookup across plain objects, `Headers`, and `Map`.
|
|
67
|
+
*
|
|
68
|
+
* @returns the header value (or `undefined` if not present).
|
|
69
|
+
*/
|
|
70
|
+
static lookupHeaderCi(headers: HeadersLike, name: string): string | undefined;
|
|
33
71
|
}
|
|
34
72
|
//# sourceMappingURL=trace-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-context.d.ts","sourceRoot":"","sources":["../src/trace-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"trace-context.d.ts","sourceRoot":"","sources":["../src/trace-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAY5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/D;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,GACP,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExB,qBAAa,YAAY;IACvB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAoC1E;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI;IA+BxD;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW;IAyBxD;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAqC5D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM;IAIlF;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CA0B9E"}
|