apcore-js 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +110 -9
  2. package/dist/acl.d.ts +18 -0
  3. package/dist/acl.d.ts.map +1 -1
  4. package/dist/acl.js +54 -17
  5. package/dist/acl.js.map +1 -1
  6. package/dist/async-task.d.ts +70 -16
  7. package/dist/async-task.d.ts.map +1 -1
  8. package/dist/async-task.js +212 -72
  9. package/dist/async-task.js.map +1 -1
  10. package/dist/builtin-steps.d.ts +16 -5
  11. package/dist/builtin-steps.d.ts.map +1 -1
  12. package/dist/builtin-steps.js +45 -28
  13. package/dist/builtin-steps.js.map +1 -1
  14. package/dist/config.d.ts +38 -0
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +163 -33
  17. package/dist/config.js.map +1 -1
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +12 -1
  20. package/dist/context.js.map +1 -1
  21. package/dist/errors.d.ts +32 -10
  22. package/dist/errors.d.ts.map +1 -1
  23. package/dist/errors.js +55 -16
  24. package/dist/errors.js.map +1 -1
  25. package/dist/events/circuit-breaker.d.ts +45 -0
  26. package/dist/events/circuit-breaker.d.ts.map +1 -0
  27. package/dist/events/circuit-breaker.js +115 -0
  28. package/dist/events/circuit-breaker.js.map +1 -0
  29. package/dist/events/emitter.d.ts +22 -1
  30. package/dist/events/emitter.d.ts.map +1 -1
  31. package/dist/events/emitter.js +66 -2
  32. package/dist/events/emitter.js.map +1 -1
  33. package/dist/events/index.d.ts +4 -2
  34. package/dist/events/index.d.ts.map +1 -1
  35. package/dist/events/index.js +3 -2
  36. package/dist/events/index.js.map +1 -1
  37. package/dist/events/subscribers.d.ts +33 -1
  38. package/dist/events/subscribers.d.ts.map +1 -1
  39. package/dist/events/subscribers.js +124 -1
  40. package/dist/events/subscribers.js.map +1 -1
  41. package/dist/executor.d.ts +10 -2
  42. package/dist/executor.d.ts.map +1 -1
  43. package/dist/executor.js +173 -52
  44. package/dist/executor.js.map +1 -1
  45. package/dist/generated/version.d.ts +1 -1
  46. package/dist/generated/version.js +1 -1
  47. package/dist/index.d.ts +35 -25
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +23 -17
  50. package/dist/index.js.map +1 -1
  51. package/dist/middleware/base.d.ts +25 -3
  52. package/dist/middleware/base.d.ts.map +1 -1
  53. package/dist/middleware/base.js +24 -0
  54. package/dist/middleware/base.js.map +1 -1
  55. package/dist/middleware/circuit-breaker.d.ts +54 -0
  56. package/dist/middleware/circuit-breaker.d.ts.map +1 -0
  57. package/dist/middleware/circuit-breaker.js +168 -0
  58. package/dist/middleware/circuit-breaker.js.map +1 -0
  59. package/dist/middleware/context-namespace.d.ts +30 -0
  60. package/dist/middleware/context-namespace.d.ts.map +1 -0
  61. package/dist/middleware/context-namespace.js +38 -0
  62. package/dist/middleware/context-namespace.js.map +1 -0
  63. package/dist/middleware/index.d.ts +7 -1
  64. package/dist/middleware/index.d.ts.map +1 -1
  65. package/dist/middleware/index.js +4 -1
  66. package/dist/middleware/index.js.map +1 -1
  67. package/dist/middleware/manager.d.ts +11 -4
  68. package/dist/middleware/manager.d.ts.map +1 -1
  69. package/dist/middleware/manager.js +25 -9
  70. package/dist/middleware/manager.js.map +1 -1
  71. package/dist/middleware/platform-notify.d.ts +8 -4
  72. package/dist/middleware/platform-notify.d.ts.map +1 -1
  73. package/dist/middleware/platform-notify.js +11 -7
  74. package/dist/middleware/platform-notify.js.map +1 -1
  75. package/dist/middleware/tracing.d.ts +50 -0
  76. package/dist/middleware/tracing.d.ts.map +1 -0
  77. package/dist/middleware/tracing.js +89 -0
  78. package/dist/middleware/tracing.js.map +1 -0
  79. package/dist/module.d.ts +94 -2
  80. package/dist/module.d.ts.map +1 -1
  81. package/dist/module.js +99 -2
  82. package/dist/module.js.map +1 -1
  83. package/dist/observability/batch-span-processor.d.ts +48 -0
  84. package/dist/observability/batch-span-processor.d.ts.map +1 -0
  85. package/dist/observability/batch-span-processor.js +89 -0
  86. package/dist/observability/batch-span-processor.js.map +1 -0
  87. package/dist/observability/context-logger.d.ts +54 -1
  88. package/dist/observability/context-logger.d.ts.map +1 -1
  89. package/dist/observability/context-logger.js +270 -6
  90. package/dist/observability/context-logger.js.map +1 -1
  91. package/dist/observability/error-history.d.ts +36 -7
  92. package/dist/observability/error-history.d.ts.map +1 -1
  93. package/dist/observability/error-history.js +169 -50
  94. package/dist/observability/error-history.js.map +1 -1
  95. package/dist/observability/index.d.ts +16 -5
  96. package/dist/observability/index.d.ts.map +1 -1
  97. package/dist/observability/index.js +8 -3
  98. package/dist/observability/index.js.map +1 -1
  99. package/dist/observability/metrics.d.ts +14 -1
  100. package/dist/observability/metrics.d.ts.map +1 -1
  101. package/dist/observability/metrics.js +23 -2
  102. package/dist/observability/metrics.js.map +1 -1
  103. package/dist/observability/prometheus-exporter.d.ts +37 -0
  104. package/dist/observability/prometheus-exporter.d.ts.map +1 -0
  105. package/dist/observability/prometheus-exporter.js +135 -0
  106. package/dist/observability/prometheus-exporter.js.map +1 -0
  107. package/dist/observability/storage.d.ts +43 -0
  108. package/dist/observability/storage.d.ts.map +1 -0
  109. package/dist/observability/storage.js +58 -0
  110. package/dist/observability/storage.js.map +1 -0
  111. package/dist/observability/store.d.ts +29 -0
  112. package/dist/observability/store.d.ts.map +1 -0
  113. package/dist/observability/store.js +36 -0
  114. package/dist/observability/store.js.map +1 -0
  115. package/dist/observability/usage-exporter.d.ts +58 -0
  116. package/dist/observability/usage-exporter.d.ts.map +1 -0
  117. package/dist/observability/usage-exporter.js +86 -0
  118. package/dist/observability/usage-exporter.js.map +1 -0
  119. package/dist/observability/usage.d.ts +18 -1
  120. package/dist/observability/usage.d.ts.map +1 -1
  121. package/dist/observability/usage.js +25 -3
  122. package/dist/observability/usage.js.map +1 -1
  123. package/dist/pipeline-config.d.ts +11 -0
  124. package/dist/pipeline-config.d.ts.map +1 -1
  125. package/dist/pipeline-config.js +36 -10
  126. package/dist/pipeline-config.js.map +1 -1
  127. package/dist/pipeline.d.ts +123 -2
  128. package/dist/pipeline.d.ts.map +1 -1
  129. package/dist/pipeline.js +249 -50
  130. package/dist/pipeline.js.map +1 -1
  131. package/dist/registry/index.d.ts +2 -0
  132. package/dist/registry/index.d.ts.map +1 -1
  133. package/dist/registry/index.js +1 -0
  134. package/dist/registry/index.js.map +1 -1
  135. package/dist/registry/multi-class.d.ts +71 -0
  136. package/dist/registry/multi-class.d.ts.map +1 -0
  137. package/dist/registry/multi-class.js +120 -0
  138. package/dist/registry/multi-class.js.map +1 -0
  139. package/dist/registry/registry.d.ts +246 -5
  140. package/dist/registry/registry.d.ts.map +1 -1
  141. package/dist/registry/registry.js +485 -16
  142. package/dist/registry/registry.js.map +1 -1
  143. package/dist/schema/annotations.d.ts.map +1 -1
  144. package/dist/schema/annotations.js +1 -0
  145. package/dist/schema/annotations.js.map +1 -1
  146. package/dist/schema/constants.d.ts +9 -0
  147. package/dist/schema/constants.d.ts.map +1 -0
  148. package/dist/schema/constants.js +9 -0
  149. package/dist/schema/constants.js.map +1 -0
  150. package/dist/schema/index.d.ts +1 -1
  151. package/dist/schema/index.d.ts.map +1 -1
  152. package/dist/schema/index.js +1 -1
  153. package/dist/schema/index.js.map +1 -1
  154. package/dist/schema/loader.d.ts +27 -3
  155. package/dist/schema/loader.d.ts.map +1 -1
  156. package/dist/schema/loader.js +137 -32
  157. package/dist/schema/loader.js.map +1 -1
  158. package/dist/schema/types.d.ts +4 -0
  159. package/dist/schema/types.d.ts.map +1 -1
  160. package/dist/schema/types.js.map +1 -1
  161. package/dist/schema/validator.d.ts +9 -0
  162. package/dist/schema/validator.d.ts.map +1 -1
  163. package/dist/schema/validator.js +153 -4
  164. package/dist/schema/validator.js.map +1 -1
  165. package/dist/sys-modules/audit.d.ts +50 -0
  166. package/dist/sys-modules/audit.d.ts.map +1 -0
  167. package/dist/sys-modules/audit.js +89 -0
  168. package/dist/sys-modules/audit.js.map +1 -0
  169. package/dist/sys-modules/control.d.ts +32 -4
  170. package/dist/sys-modules/control.d.ts.map +1 -1
  171. package/dist/sys-modules/control.js +196 -25
  172. package/dist/sys-modules/control.js.map +1 -1
  173. package/dist/sys-modules/index.d.ts +7 -2
  174. package/dist/sys-modules/index.d.ts.map +1 -1
  175. package/dist/sys-modules/index.js +3 -1
  176. package/dist/sys-modules/index.js.map +1 -1
  177. package/dist/sys-modules/overrides.d.ts +58 -0
  178. package/dist/sys-modules/overrides.d.ts.map +1 -0
  179. package/dist/sys-modules/overrides.js +106 -0
  180. package/dist/sys-modules/overrides.js.map +1 -0
  181. package/dist/sys-modules/registration.d.ts +17 -12
  182. package/dist/sys-modules/registration.d.ts.map +1 -1
  183. package/dist/sys-modules/registration.js +134 -23
  184. package/dist/sys-modules/registration.js.map +1 -1
  185. package/dist/sys-modules/toggle.d.ts +7 -2
  186. package/dist/sys-modules/toggle.d.ts.map +1 -1
  187. package/dist/sys-modules/toggle.js +61 -5
  188. package/dist/sys-modules/toggle.js.map +1 -1
  189. package/dist/trace-context.d.ts +47 -9
  190. package/dist/trace-context.d.ts.map +1 -1
  191. package/dist/trace-context.js +139 -16
  192. package/dist/trace-context.js.map +1 -1
  193. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Multi-class module discovery: opt-in scanner, snake_case ID derivation, conflict detection.
3
+ *
4
+ * Implements PROTOCOL_SPEC §2.1.1 (Multi-Module Discovery).
5
+ */
6
+ import { IdTooLongError, InvalidSegmentError, ModuleIdConflictError } from '../errors.js';
7
+ const SEGMENT_RE = /^[a-z][a-z0-9_]*$/;
8
+ const CANONICAL_ID_RE = /^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/;
9
+ const MAX_MODULE_ID_LEN = 192;
10
+ /**
11
+ * Convert a class name to a snake_case segment per PROTOCOL_SPEC §2.1.1.
12
+ *
13
+ * Algorithm:
14
+ * 1. Insert boundary at ALLCAPS→CamelCase transitions (HTTPSender → HTTP_Sender).
15
+ * 2. Insert boundary at lowercase/digit→uppercase transitions (MathOps → Math_Ops).
16
+ * 3. Replace every non-alphanumeric character with `_`.
17
+ * 4. Lowercase.
18
+ * 5. Collapse consecutive `_` to a single `_`.
19
+ * 6. Strip leading and trailing `_`.
20
+ */
21
+ export function classNameToSegment(className) {
22
+ let s = className.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2');
23
+ s = s.replace(/([a-z\d])([A-Z])/g, '$1_$2');
24
+ s = s.replace(/[^a-zA-Z0-9]/g, '_');
25
+ s = s.toLowerCase();
26
+ s = s.replace(/_+/g, '_');
27
+ return s.replace(/^_+|_+$/g, '');
28
+ }
29
+ function computeBaseId(filePath, extensionsRoot) {
30
+ const normalized = filePath.replace(/\\/g, '/');
31
+ const parts = normalized.split('/');
32
+ const rootIdx = parts.findIndex(p => p === extensionsRoot);
33
+ const relParts = rootIdx === -1 ? [parts[parts.length - 1]] : parts.slice(rootIdx + 1);
34
+ // Strip file extension from the last segment
35
+ relParts[relParts.length - 1] = relParts[relParts.length - 1].replace(/\.[^.]+$/, '');
36
+ return relParts.join('.');
37
+ }
38
+ /**
39
+ * Discover module IDs for classes in a single file under multi-class mode.
40
+ *
41
+ * Implements the Registry.discover_multi_class contract from PROTOCOL_SPEC §2.1.1.
42
+ *
43
+ * When multiClassEnabled is false (the default — multi-class mode is opt-in),
44
+ * only the first qualifying class is used and the bare base_id is returned.
45
+ *
46
+ * When multiClassEnabled is true and exactly one class qualifies:
47
+ * - If the class segment matches the file's last path segment (class named after
48
+ * the file), the bare base_id is returned to preserve existing module IDs.
49
+ * - Otherwise the class segment is appended: base_id.class_segment.
50
+ *
51
+ * @internal Prefer `Registry.discoverMultiClass` (D-15) for the canonical
52
+ * cross-language API surface; this free function is retained for backwards
53
+ * compatibility and direct use by the scanner.
54
+ *
55
+ * @throws ModuleIdConflictError — two classes produce the same class_segment
56
+ * @throws InvalidSegmentError — a segment does not match ^[a-z][a-z0-9_]*$
57
+ * @throws IdTooLongError — a derived module_id exceeds 192 characters
58
+ */
59
+ export function discoverMultiClass(filePath, classes, extensionsRoot = 'extensions', multiClassEnabled = false) {
60
+ const qualifying = classes.filter(c => c.implementsModule);
61
+ if (qualifying.length === 0)
62
+ return [];
63
+ const baseId = computeBaseId(filePath, extensionsRoot);
64
+ if (!multiClassEnabled) {
65
+ return [{ moduleId: baseId, className: qualifying[0].name }];
66
+ }
67
+ if (qualifying.length === 1) {
68
+ const segment = classNameToSegment(qualifying[0].name);
69
+ const lastBaseSegment = baseId.split('.').pop();
70
+ // Identity guarantee: when the class segment matches the file's last segment
71
+ // (class named after the file), preserve the bare base_id so existing IDs
72
+ // are not broken when multi-class mode is enabled.
73
+ if (segment === lastBaseSegment) {
74
+ return [{ moduleId: baseId, className: qualifying[0].name }];
75
+ }
76
+ // Class has a distinct name from the file — append the class segment.
77
+ if (!SEGMENT_RE.test(segment))
78
+ throw new InvalidSegmentError(filePath, qualifying[0].name, segment);
79
+ const moduleId = `${baseId}.${segment}`;
80
+ if (!CANONICAL_ID_RE.test(moduleId))
81
+ throw new InvalidSegmentError(filePath, qualifying[0].name, segment);
82
+ if (moduleId.length > MAX_MODULE_ID_LEN)
83
+ throw new IdTooLongError(filePath, moduleId);
84
+ return [{ moduleId, className: qualifying[0].name }];
85
+ }
86
+ // Multi-class path: derive IDs, detect conflicts, validate
87
+ const seenSegments = new Map(); // segment → className
88
+ const results = [];
89
+ for (const cls of qualifying) {
90
+ const segment = classNameToSegment(cls.name);
91
+ if (!SEGMENT_RE.test(segment)) {
92
+ throw new InvalidSegmentError(filePath, cls.name, segment);
93
+ }
94
+ if (seenSegments.has(segment)) {
95
+ console.warn(`[apcore:multi-class] MODULE_ID_CONFLICT in '${filePath}': ` +
96
+ `classes '${seenSegments.get(segment)}' and '${cls.name}' both produce segment '${segment}'`);
97
+ throw new ModuleIdConflictError(filePath, [seenSegments.get(segment), cls.name], segment);
98
+ }
99
+ seenSegments.set(segment, cls.name);
100
+ const moduleId = `${baseId}.${segment}`;
101
+ if (!CANONICAL_ID_RE.test(moduleId)) {
102
+ throw new InvalidSegmentError(filePath, cls.name, segment);
103
+ }
104
+ if (moduleId.length > MAX_MODULE_ID_LEN) {
105
+ throw new IdTooLongError(filePath, moduleId);
106
+ }
107
+ results.push({ moduleId, className: cls.name });
108
+ }
109
+ return results;
110
+ }
111
+ /**
112
+ * Internal alias of {@link discoverMultiClass}. Use {@link Registry.discoverMultiClass}
113
+ * instead — this name is preserved so the scanner and other internal callers
114
+ * have a stable reference that signals the surface is not part of the public
115
+ * API.
116
+ *
117
+ * @internal
118
+ */
119
+ export const _discoverMultiClass = discoverMultiClass;
120
+ //# sourceMappingURL=multi-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-class.js","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,17 @@
2
2
  * Central module registry for discovering, registering, and querying modules.
3
3
  */
4
4
  import type { Config } from '../config.js';
5
+ import type { Context } from '../context.js';
6
+ import type { EventEmitter } from '../events/emitter.js';
5
7
  import type { ModuleDescriptor } from './types.js';
8
+ /**
9
+ * Reset the one-shot deprecation flag for the legacy 4-arg
10
+ * `Registry.discoverMultiClass` overload. Test-only — production callers
11
+ * never need this.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare function _resetMultiClassEnabledDeprecationWarned(): void;
6
16
  /**
7
17
  * Standard registry event names.
8
18
  */
@@ -28,6 +38,23 @@ export declare const MAX_MODULE_ID_LENGTH = 192;
28
38
  * Reserved words that cannot appear as the first segment of a module ID.
29
39
  */
30
40
  export declare const RESERVED_WORDS: Set<string>;
41
+ /**
42
+ * Namespace prefix reserved for programmatically-registered modules
43
+ * synthesized at runtime (PROTOCOL_SPEC §2.5; RFC
44
+ * `apcore/docs/spec/rfc-ephemeral-modules.md`). IDs in this namespace MUST
45
+ * be registered through {@link Registry.register} only — the filesystem
46
+ * discoverer rejects matching IDs because the namespace has no
47
+ * directory-rooted source of truth, and {@link Registry.registerInternal}
48
+ * rejects them too so the audit-trail provenance distinction between
49
+ * framework-emitted (`system.*`) and caller-emitted (`ephemeral.*`)
50
+ * modules stays clean.
51
+ *
52
+ * The trailing dot is required so module IDs whose first segment merely
53
+ * *starts with* `ephemeral` (e.g. `ephemerals`) are not falsely classified.
54
+ */
55
+ export declare const EPHEMERAL_NAMESPACE_PREFIX = "ephemeral.";
56
+ /** Return true when `moduleId` belongs to the reserved `ephemeral.*` namespace. */
57
+ export declare function isEphemeralModuleId(moduleId: string): boolean;
31
58
  /**
32
59
  * Interface for custom module discovery.
33
60
  */
@@ -65,6 +92,16 @@ export declare class Registry {
65
92
  private _refCounts;
66
93
  private _draining;
67
94
  private _drainResolvers;
95
+ /**
96
+ * Optional EventEmitter for the ephemeral.* registry-side audit emits
97
+ * (RFC `apcore/docs/spec/rfc-ephemeral-modules.md` "Audit-event single-emit
98
+ * rule"). Set via {@link setEventEmitter}; when null, ephemeral audit
99
+ * events are warn-logged so they never silently disappear.
100
+ *
101
+ * Mirrors apcore-python `Registry._event_emitter` /
102
+ * `Registry.set_event_emitter`.
103
+ */
104
+ private _eventEmitter;
68
105
  constructor(options?: {
69
106
  config?: Config | null;
70
107
  extensionsDir?: string | null;
@@ -77,12 +114,63 @@ export declare class Registry {
77
114
  setValidator(validator: ModuleValidator): void;
78
115
  discover(): Promise<number>;
79
116
  private _discoverCustom;
117
+ /**
118
+ * Default discovery pipeline (D-32 — 8 canonical stages, mirroring
119
+ * apcore-rust `default_discoverer.rs`):
120
+ *
121
+ * 1. _ensureIdMap — lazy-load the optional id_map.json
122
+ * 2. _scanRoots — walk extension roots
123
+ * 3. _applyIdMapOverrides — rewrite canonical IDs from the map
124
+ * 4. _loadAllMetadata — load each module's `module.yaml`
125
+ * 5. _resolveAllEntryPoints — import the JS/TS entry point
126
+ * 6. _validateAll — run module/custom validators
127
+ * 7. _filterIdConflicts — batch-drop conflicting / invalid IDs
128
+ * 8. _resolveLoadOrder + _registerInOrder
129
+ * — topological sort then register.
130
+ */
80
131
  private _discoverDefault;
81
132
  private _scanRoots;
133
+ /**
134
+ * Reject filesystem-derived IDs that fall in the reserved `ephemeral.*`
135
+ * namespace.
136
+ *
137
+ * Per the apcore ephemeral-modules RFC pilot (`apcore/docs/spec/
138
+ * rfc-ephemeral-modules.md`), `ephemeral.*` is reserved for
139
+ * programmatically-registered modules synthesized at runtime. Any
140
+ * filesystem layout that produces such an ID is a configuration error —
141
+ * either the directory is misnamed or the namespace prefix is being
142
+ * misused. We surface this as an `InvalidInputError` so callers cannot
143
+ * accidentally pollute the registry with filesystem-rooted ephemerals.
144
+ *
145
+ * Mirrors apcore-python `Registry._reject_ephemeral_discoveries`.
146
+ */
147
+ private _rejectEphemeralDiscoveries;
82
148
  private _applyIdMapOverrides;
83
149
  private _loadAllMetadata;
84
150
  private _resolveAllEntryPoints;
85
151
  private _validateAll;
152
+ /**
153
+ * Stage 7 (D-32) — batch-drop modules with invalid or conflicting IDs.
154
+ *
155
+ * Mirrors apcore-python `_filter_id_conflicts` and apcore-rust
156
+ * `default_discoverer::filter_id_conflicts`. Two failure modes drop a
157
+ * module here (warn + skip) rather than aborting the whole batch:
158
+ * - PROTOCOL_SPEC §2.7 ID validation (empty / pattern / length /
159
+ * reserved-word first segment), and
160
+ * - Algorithm A03 conflict detection (duplicate against an existing
161
+ * registration, lowercase collision, reserved-word collision).
162
+ *
163
+ * Soft-severity conflicts (e.g. case-insensitive match against an
164
+ * already-registered ID at `warn` level) are NOT dropped here — the
165
+ * warning is logged and the module flows through to registration so
166
+ * existing behaviour is preserved. Only `error`-severity conflicts and
167
+ * invalid IDs are filtered out.
168
+ *
169
+ * `rawMetadata` is accepted for cross-language signature parity with
170
+ * the Rust/Python helpers (which may inspect metadata for additional
171
+ * checks); the TS implementation reads only the module ID.
172
+ */
173
+ private _filterIdConflicts;
86
174
  private _resolveLoadOrder;
87
175
  private _registerInOrder;
88
176
  /**
@@ -91,26 +179,110 @@ export declare class Registry {
91
179
  * Validation order (PROTOCOL_SPEC §2.7, aligned with apcore-python and
92
180
  * apcore-rust): empty → pattern → length → reserved (per-segment) →
93
181
  * duplicate.
182
+ *
183
+ * The optional `version` and `metadata` parameters mirror apcore-python's
184
+ * `Registry.register(module_id, module, version=None, metadata=None)` for
185
+ * cross-language signature parity (sync finding A-001). Multi-version
186
+ * coexistence is not yet implemented in this SDK — when supplied, both
187
+ * fields are merged into the module's metadata so callers can read them
188
+ * back via `getDefinition()` and `list({tags})`. See PROTOCOL_SPEC §5.4.
94
189
  */
95
- register(moduleId: string, module: unknown): void;
190
+ register(moduleId: string, module: unknown, version?: string | null, metadata?: Record<string, unknown> | null, options?: {
191
+ context?: Context | null;
192
+ }): void;
96
193
  /** Inner registration — no validator, no ID validation. Used by discover() paths that run their own checks. */
97
194
  private _registerImpl;
98
- unregister(moduleId: string): boolean;
99
- get(moduleId: string): unknown | null;
195
+ unregister(moduleId: string, options?: {
196
+ context?: Context | null;
197
+ }): boolean;
198
+ /**
199
+ * Look up a registered module by ID.
200
+ *
201
+ * @param moduleId - Module identifier (must be non-empty).
202
+ * @param _versionHint - Optional semver range for multi-version coexistence
203
+ * (PROTOCOL_SPEC §5.4). This SDK currently exposes a single-version
204
+ * registry, so the hint is accepted for cross-language API parity with
205
+ * apcore-python (sync finding A-002) but does NOT participate in
206
+ * resolution: the latest registered module for `moduleId` is returned
207
+ * regardless of the hint. When multi-version registration lands, this
208
+ * parameter will gate semver-range matching.
209
+ */
210
+ get(moduleId: string, _versionHint?: string | null): unknown | null;
100
211
  has(moduleId: string): boolean;
212
+ /**
213
+ * Return sorted list of registered module IDs, optionally filtered by
214
+ * `prefix` / `tags`.
215
+ *
216
+ * Modules whose `ModuleAnnotations.discoverable === false` are excluded
217
+ * by default per PROTOCOL_SPEC §4.4 (RFC
218
+ * `apcore/docs/spec/rfc-ephemeral-modules.md`). Pass
219
+ * `includeHidden: true` to enumerate every registered module — useful
220
+ * for introspection tools, debug consoles, and tests.
221
+ */
101
222
  list(options?: {
102
223
  tags?: string[];
103
224
  prefix?: string;
225
+ includeHidden?: boolean;
104
226
  }): string[];
105
- iter(): IterableIterator<[string, unknown]>;
227
+ /**
228
+ * Iterate `[moduleId, module]` pairs. Hides modules annotated
229
+ * `discoverable: false` by default; pass `includeHidden: true` to walk
230
+ * every registered module.
231
+ */
232
+ iter(options?: {
233
+ includeHidden?: boolean;
234
+ }): IterableIterator<[string, unknown]>;
235
+ /** Total number of registered modules (includes `discoverable: false`). */
106
236
  get count(): number;
237
+ /**
238
+ * Sorted list of registered module IDs (excludes
239
+ * `ModuleAnnotations.discoverable === false` modules). Use
240
+ * {@link list} with `includeHidden: true` when the full set is required.
241
+ */
107
242
  get moduleIds(): string[];
108
- getDefinition(moduleId: string): ModuleDescriptor | null;
243
+ /**
244
+ * Return false when the module's annotations declare
245
+ * `discoverable: false`. Anything else (including missing annotations)
246
+ * keeps the module visible — the default `true` preserves backward
247
+ * compatibility.
248
+ *
249
+ * Resolution order matches `mergeModuleMetadata`:
250
+ * 1. The merged `annotations` slot in `_moduleMeta` (which already
251
+ * accounts for YAML > code precedence).
252
+ * 2. The module instance's `annotations` attribute (covers paths that
253
+ * bypassed the merge, e.g. `registerInternal`).
254
+ */
255
+ private _isDiscoverable;
256
+ private _readDiscoverable;
257
+ getDefinition(moduleId: string, _versionHint?: string | null): ModuleDescriptor | null;
109
258
  describe(moduleId: string): string;
110
259
  on(event: string, callback: EventCallback): void;
111
260
  off(event: string, callback: EventCallback): boolean;
112
261
  reload(): Promise<number>;
113
262
  private _triggerEvent;
263
+ /**
264
+ * Watch the configured extension roots for filesystem changes and
265
+ * unregister any module whose source file is modified or deleted.
266
+ *
267
+ * **Cross-language divergence (sync finding A-D-104):** unlike apcore-python
268
+ * (which re-imports the file via `importlib.reload`) and apcore-rust (which
269
+ * triggers full rediscovery), the TypeScript SDK is **event-only**. On a
270
+ * file change the registry:
271
+ * 1. unregisters the previously-loaded module (calling its `onUnload`),
272
+ * 2. emits a `'file_changed'` event with `{ filePath }` payload.
273
+ *
274
+ * Consumers are expected to subscribe and re-register the module
275
+ * themselves (e.g. by calling `registry.discover()` or registering a fresh
276
+ * import). ES module specifiers are immutable in Node — there is no
277
+ * portable "reload from disk" primitive — so a transparent dynamic
278
+ * `import()` would silently return the cached old module on every
279
+ * invocation. A workaround using a cache-busting query (`?v=Date.now()`)
280
+ * leaks the old module each reload and breaks browser bundlers, so it is
281
+ * intentionally **not** offered here.
282
+ *
283
+ * If your application needs Python-style hot-reload semantics, listen for
284
+ * `'file_changed'` and re-discover or re-import explicitly.
285
+ */
114
286
  watch(): Promise<void>;
115
287
  unwatch(): void;
116
288
  private _handleFileChange;
@@ -137,6 +309,35 @@ export declare class Registry {
137
309
  */
138
310
  exportSchema(moduleId: string, strict?: boolean): Record<string, unknown> | null;
139
311
  clearCache(): void;
312
+ /**
313
+ * Discover module IDs for the classes in a single file under multi-class
314
+ * mode (PROTOCOL_SPEC §2.1.1).
315
+ *
316
+ * D-15: cross-language alignment with Python `Registry.discover_multi_class`
317
+ * and the Rust trait method. Internally delegates to the free function
318
+ * {@link discoverMultiClass} (re-exported as `_discoverMultiClass` for
319
+ * scanner internals), so behaviour is identical.
320
+ *
321
+ * **apcore decision-log D-06**: the per-class `ClassDescriptor.multiClass`
322
+ * flag is the sole opt-in mechanism for multi-class discovery. When any
323
+ * qualifying class sets `multiClass: true`, the discovery routine derives
324
+ * a distinct module ID per class; otherwise whole-file mode is used.
325
+ *
326
+ * @param filePath - Source file path (relative to project root).
327
+ * @param classes - Class descriptors; each may carry `multiClass: true`
328
+ * to opt into per-class module ID derivation.
329
+ * @param extensionsRoot - Extensions root directory (defaults to
330
+ * `'extensions'`).
331
+ *
332
+ * **Deprecated 4-arg overload**: passing a `multiClassEnabled` boolean as
333
+ * the fourth argument is retained for backward compatibility through one
334
+ * minor release and will be removed in v0.22.0. The argument is now
335
+ * functionally inert — the per-class `multiClass` field is the source of
336
+ * truth. A one-shot deprecation notice is emitted on first use.
337
+ */
338
+ discoverMultiClass(filePath: string, classes: readonly import('./multi-class.js').ClassDescriptor[], extensionsRoot?: string): import('./multi-class.js').MultiClassEntry[];
339
+ /** @deprecated Pass `multiClass: true` on each `ClassDescriptor` instead. The `multiClassEnabled` argument will be removed in v0.22.0. */
340
+ discoverMultiClass(filePath: string, classes: readonly import('./multi-class.js').ClassDescriptor[], extensionsRoot: string, multiClassEnabled: boolean): import('./multi-class.js').MultiClassEntry[];
140
341
  /**
141
342
  * Number of in-flight executions per module.
142
343
  */
@@ -186,6 +387,46 @@ export declare class Registry {
186
387
  *
187
388
  * Returns true if drained cleanly, false if force-unloaded after timeout.
188
389
  */
390
+ /**
391
+ * Wire an EventEmitter for registry-side audit emits.
392
+ *
393
+ * Per the apcore RFC `apcore/docs/spec/rfc-ephemeral-modules.md`
394
+ * "Audit-event single-emit rule", `ephemeral.*` registrations and
395
+ * unregistrations emit a single `apcore.registry.module_registered` /
396
+ * `apcore.registry.module_unregistered` event with the D-35 contextual
397
+ * payload. When no emitter is wired, the event is logged at INFO so it
398
+ * never silently disappears — useful for the v1 pilot where most
399
+ * callers will not have an emitter attached.
400
+ *
401
+ * Pilot scope: only `ephemeral.*` registrations trigger registry-side
402
+ * emits. The pre-existing bridge in
403
+ * `sys-modules/registration.ts` continues to emit empty-payload events
404
+ * for non-ephemeral modules and short-circuits for ephemerals so the
405
+ * single-emit rule holds.
406
+ */
407
+ setEventEmitter(emitter: EventEmitter | null): void;
408
+ /**
409
+ * Soft-warn when an `ephemeral.*` module is registered without
410
+ * `requiresApproval: true`. Per the ephemeral-modules RFC pilot,
411
+ * agent-synthesized modules SHOULD declare `requiresApproval` so a
412
+ * human gates execution. The registry only warns; it does not refuse
413
+ * the registration.
414
+ */
415
+ private _warnIfMissingApproval;
416
+ /**
417
+ * Build the D-35 audit payload (`caller_id` plus optional `identity`
418
+ * snapshot) for an ephemeral.* register/unregister. Mirrors the shape
419
+ * `extractAuditIdentity` produces for `system.control.*` events so
420
+ * subscribers can apply identical redaction rules.
421
+ */
422
+ private _buildEphemeralAuditPayload;
423
+ /**
424
+ * Emit the canonical ephemeral.* audit event to the wired EventEmitter
425
+ * (or warn-log if none is wired). The bridge in
426
+ * `sys-modules/registration.ts` short-circuits on ephemeral.* IDs so
427
+ * exactly one event lands per registration / unregistration.
428
+ */
429
+ private _emitEphemeralAudit;
189
430
  safeUnregister(moduleId: string, timeoutMs?: number): Promise<boolean>;
190
431
  }
191
432
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAW3C,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiDnE;;GAEG;AACH,eAAO,MAAM,eAAe;;;EAGjB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAA0C,CAAC;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,aAA+E,CAAC;AAiD3G;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACjI;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACzD;AAED,KAAK,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAEjE,qBAAa,QAAQ;IACnB,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,WAAW,CAAmD;IACtE,OAAO,CAAC,UAAU,CAGf;IACH,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,YAAY,CAAmD;IACvE,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAC,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,eAAe,CAA6C;gBAExD,OAAO,CAAC,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;QAChE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;IA0BD,4DAA4D;YAC9C,YAAY;IAM1B,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAIxC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;YAOnB,eAAe;YAkDf,gBAAgB;YAahB,UAAU;YAeV,oBAAoB;YA4BpB,gBAAgB;YAUhB,sBAAsB;YAiBtB,YAAY;IAe1B,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,gBAAgB;IAiCxB;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAkBjD,+GAA+G;IAC/G,OAAO,CAAC,aAAa;IAsCrB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAuBrC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAOrC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE;IA0B9D,IAAI,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI3C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAED,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IA4BxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IA2ClC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAUhD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAc9C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,OAAO,CAAC,aAAa;IAWf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD5B,OAAO,IAAI,IAAI;YAUD,iBAAiB;YA4BjB,mBAAmB;IAejC,OAAO,CAAC,eAAe;IAYvB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAwBzD;;;;;;;;OAQG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,OAAe,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYjC,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1C;IAED;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYlC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAgB/B;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUhC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBzE;;;;;;;OAOG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAiBnF"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"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"}