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.
Files changed (186) 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 +134 -51
  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/observability/batch-span-processor.d.ts +48 -0
  80. package/dist/observability/batch-span-processor.d.ts.map +1 -0
  81. package/dist/observability/batch-span-processor.js +89 -0
  82. package/dist/observability/batch-span-processor.js.map +1 -0
  83. package/dist/observability/context-logger.d.ts +54 -1
  84. package/dist/observability/context-logger.d.ts.map +1 -1
  85. package/dist/observability/context-logger.js +270 -6
  86. package/dist/observability/context-logger.js.map +1 -1
  87. package/dist/observability/error-history.d.ts +36 -7
  88. package/dist/observability/error-history.d.ts.map +1 -1
  89. package/dist/observability/error-history.js +169 -50
  90. package/dist/observability/error-history.js.map +1 -1
  91. package/dist/observability/index.d.ts +16 -5
  92. package/dist/observability/index.d.ts.map +1 -1
  93. package/dist/observability/index.js +8 -3
  94. package/dist/observability/index.js.map +1 -1
  95. package/dist/observability/metrics.d.ts +14 -1
  96. package/dist/observability/metrics.d.ts.map +1 -1
  97. package/dist/observability/metrics.js +23 -2
  98. package/dist/observability/metrics.js.map +1 -1
  99. package/dist/observability/prometheus-exporter.d.ts +37 -0
  100. package/dist/observability/prometheus-exporter.d.ts.map +1 -0
  101. package/dist/observability/prometheus-exporter.js +135 -0
  102. package/dist/observability/prometheus-exporter.js.map +1 -0
  103. package/dist/observability/storage.d.ts +43 -0
  104. package/dist/observability/storage.d.ts.map +1 -0
  105. package/dist/observability/storage.js +58 -0
  106. package/dist/observability/storage.js.map +1 -0
  107. package/dist/observability/store.d.ts +29 -0
  108. package/dist/observability/store.d.ts.map +1 -0
  109. package/dist/observability/store.js +36 -0
  110. package/dist/observability/store.js.map +1 -0
  111. package/dist/observability/usage-exporter.d.ts +58 -0
  112. package/dist/observability/usage-exporter.d.ts.map +1 -0
  113. package/dist/observability/usage-exporter.js +86 -0
  114. package/dist/observability/usage-exporter.js.map +1 -0
  115. package/dist/observability/usage.d.ts +18 -1
  116. package/dist/observability/usage.d.ts.map +1 -1
  117. package/dist/observability/usage.js +25 -3
  118. package/dist/observability/usage.js.map +1 -1
  119. package/dist/pipeline-config.d.ts +11 -0
  120. package/dist/pipeline-config.d.ts.map +1 -1
  121. package/dist/pipeline-config.js +36 -10
  122. package/dist/pipeline-config.js.map +1 -1
  123. package/dist/pipeline.d.ts +123 -2
  124. package/dist/pipeline.d.ts.map +1 -1
  125. package/dist/pipeline.js +249 -50
  126. package/dist/pipeline.js.map +1 -1
  127. package/dist/registry/index.d.ts +2 -0
  128. package/dist/registry/index.d.ts.map +1 -1
  129. package/dist/registry/index.js +1 -0
  130. package/dist/registry/index.js.map +1 -1
  131. package/dist/registry/multi-class.d.ts +57 -0
  132. package/dist/registry/multi-class.d.ts.map +1 -0
  133. package/dist/registry/multi-class.js +120 -0
  134. package/dist/registry/multi-class.js.map +1 -0
  135. package/dist/registry/registry.d.ts +91 -3
  136. package/dist/registry/registry.d.ts.map +1 -1
  137. package/dist/registry/registry.js +181 -11
  138. package/dist/registry/registry.js.map +1 -1
  139. package/dist/schema/constants.d.ts +9 -0
  140. package/dist/schema/constants.d.ts.map +1 -0
  141. package/dist/schema/constants.js +9 -0
  142. package/dist/schema/constants.js.map +1 -0
  143. package/dist/schema/index.d.ts +1 -1
  144. package/dist/schema/index.d.ts.map +1 -1
  145. package/dist/schema/index.js +1 -1
  146. package/dist/schema/index.js.map +1 -1
  147. package/dist/schema/loader.d.ts +27 -3
  148. package/dist/schema/loader.d.ts.map +1 -1
  149. package/dist/schema/loader.js +137 -32
  150. package/dist/schema/loader.js.map +1 -1
  151. package/dist/schema/types.d.ts +4 -0
  152. package/dist/schema/types.d.ts.map +1 -1
  153. package/dist/schema/types.js.map +1 -1
  154. package/dist/schema/validator.d.ts +9 -0
  155. package/dist/schema/validator.d.ts.map +1 -1
  156. package/dist/schema/validator.js +153 -4
  157. package/dist/schema/validator.js.map +1 -1
  158. package/dist/sys-modules/audit.d.ts +50 -0
  159. package/dist/sys-modules/audit.d.ts.map +1 -0
  160. package/dist/sys-modules/audit.js +89 -0
  161. package/dist/sys-modules/audit.js.map +1 -0
  162. package/dist/sys-modules/control.d.ts +32 -4
  163. package/dist/sys-modules/control.d.ts.map +1 -1
  164. package/dist/sys-modules/control.js +196 -25
  165. package/dist/sys-modules/control.js.map +1 -1
  166. package/dist/sys-modules/index.d.ts +7 -2
  167. package/dist/sys-modules/index.d.ts.map +1 -1
  168. package/dist/sys-modules/index.js +3 -1
  169. package/dist/sys-modules/index.js.map +1 -1
  170. package/dist/sys-modules/overrides.d.ts +58 -0
  171. package/dist/sys-modules/overrides.d.ts.map +1 -0
  172. package/dist/sys-modules/overrides.js +106 -0
  173. package/dist/sys-modules/overrides.js.map +1 -0
  174. package/dist/sys-modules/registration.d.ts +17 -12
  175. package/dist/sys-modules/registration.d.ts.map +1 -1
  176. package/dist/sys-modules/registration.js +115 -23
  177. package/dist/sys-modules/registration.js.map +1 -1
  178. package/dist/sys-modules/toggle.d.ts +7 -2
  179. package/dist/sys-modules/toggle.d.ts.map +1 -1
  180. package/dist/sys-modules/toggle.js +61 -5
  181. package/dist/sys-modules/toggle.js.map +1 -1
  182. package/dist/trace-context.d.ts +47 -9
  183. package/dist/trace-context.d.ts.map +1 -1
  184. package/dist/trace-context.js +139 -16
  185. package/dist/trace-context.js.map +1 -1
  186. package/package.json +1 -1
package/dist/pipeline.js CHANGED
@@ -3,16 +3,35 @@
3
3
  */
4
4
  import { ModuleError } from './errors.js';
5
5
  import { matchPattern } from './utils/pattern.js';
6
- // ---------------------------------------------------------------------------
7
- // ExecutionStrategy
8
- // ---------------------------------------------------------------------------
6
+ /**
7
+ * Detect a thenable (Promise-like) without calling `.then`.
8
+ *
9
+ * Mirrors the Issue #42 fix in MiddlewareManager: handlers may not be
10
+ * declared `async` but still return a Promise; treating those values as
11
+ * sync would silently drop their effects.
12
+ */
13
+ function _isThenable(value) {
14
+ return (value != null &&
15
+ (typeof value === 'object' || typeof value === 'function') &&
16
+ typeof value.then === 'function');
17
+ }
18
+ async function _maybeAwait(value) {
19
+ if (_isThenable(value)) {
20
+ return await value;
21
+ }
22
+ return value;
23
+ }
9
24
  /** An ordered sequence of steps that defines how a module is executed. */
10
25
  export class ExecutionStrategy {
11
26
  name;
12
27
  _steps;
13
- constructor(name, steps) {
28
+ _nameToIdx;
29
+ _seedProvides;
30
+ constructor(name, steps, options) {
14
31
  this.name = name;
15
32
  this._steps = [...steps];
33
+ this._nameToIdx = new Map();
34
+ this._seedProvides = new Set(options?.seedProvides ?? []);
16
35
  // Validate unique step names
17
36
  const names = this._steps.map((s) => s.name);
18
37
  const seen = new Set();
@@ -26,18 +45,35 @@ export class ExecutionStrategy {
26
45
  if (dupes.size > 0) {
27
46
  throw new StepNameDuplicateError(`Duplicate step names: ${[...dupes].join(', ')}`);
28
47
  }
48
+ this._rebuildIndex();
29
49
  this._validateDependencies();
30
50
  }
31
- /** Warn if any step's requires are not provided by a preceding step. */
51
+ /** Rebuild the O(1) name→index map. Call after any mutation (§1.5). */
52
+ _rebuildIndex() {
53
+ this._nameToIdx = new Map(this._steps.map((s, i) => [s.name, i]));
54
+ }
55
+ /**
56
+ * Fail-fast: throw `PipelineDependencyError` if any step's `requires` are not
57
+ * provided by a preceding step (Issue #33 §2.1).
58
+ *
59
+ * Previously this method emitted a `console.warn` and let construction
60
+ * succeed; that allowed misconfigured strategies to run partway and fail
61
+ * with a confusing runtime error. Throwing at construction surfaces the
62
+ * problem immediately and tells the caller which step / field is missing.
63
+ */
32
64
  _validateDependencies() {
33
- const provided = new Set();
65
+ const provided = new Set(this._seedProvides);
34
66
  for (const step of this._steps) {
35
67
  const requires = step.requires ?? [];
68
+ const missing = [];
36
69
  for (const req of requires) {
37
70
  if (!provided.has(req)) {
38
- console.warn(`[apcore:pipeline] Step '${step.name}' requires '${req}', but no preceding step provides it. This may cause runtime errors.`);
71
+ missing.push(req);
39
72
  }
40
73
  }
74
+ if (missing.length > 0) {
75
+ throw new PipelineDependencyError(step.name, missing);
76
+ }
41
77
  for (const p of step.provides ?? []) {
42
78
  provided.add(p);
43
79
  }
@@ -46,59 +82,82 @@ export class ExecutionStrategy {
46
82
  get steps() {
47
83
  return this._steps;
48
84
  }
85
+ /** Return the index of a step by name, or undefined if not found. O(1). */
86
+ findStepIndex(name) {
87
+ return this._nameToIdx.get(name);
88
+ }
49
89
  /** Insert a step after the named anchor step. */
50
90
  insertAfter(anchor, step) {
51
- if (this._steps.some((s) => s.name === step.name)) {
91
+ if (this._nameToIdx.has(step.name)) {
52
92
  throw new StepNameDuplicateError(`Step '${step.name}' already exists`);
53
93
  }
54
- for (let i = 0; i < this._steps.length; i++) {
55
- if (this._steps[i].name === anchor) {
56
- this._steps.splice(i + 1, 0, step);
57
- this._validateDependencies();
58
- return;
59
- }
94
+ const anchorIdx = this._nameToIdx.get(anchor);
95
+ if (anchorIdx === undefined) {
96
+ throw new StepNotFoundError(`Anchor step '${anchor}' not found`);
60
97
  }
61
- throw new StepNotFoundError(`Anchor step '${anchor}' not found`);
98
+ this._steps.splice(anchorIdx + 1, 0, step);
99
+ this._rebuildIndex();
100
+ this._validateDependencies();
62
101
  }
63
102
  /** Insert a step before the named anchor step. */
64
103
  insertBefore(anchor, step) {
65
- if (this._steps.some((s) => s.name === step.name)) {
104
+ if (this._nameToIdx.has(step.name)) {
66
105
  throw new StepNameDuplicateError(`Step '${step.name}' already exists`);
67
106
  }
68
- for (let i = 0; i < this._steps.length; i++) {
69
- if (this._steps[i].name === anchor) {
70
- this._steps.splice(i, 0, step);
71
- this._validateDependencies();
72
- return;
73
- }
107
+ const anchorIdx = this._nameToIdx.get(anchor);
108
+ if (anchorIdx === undefined) {
109
+ throw new StepNotFoundError(`Anchor step '${anchor}' not found`);
74
110
  }
75
- throw new StepNotFoundError(`Anchor step '${anchor}' not found`);
111
+ this._steps.splice(anchorIdx, 0, step);
112
+ this._rebuildIndex();
113
+ this._validateDependencies();
76
114
  }
77
115
  /** Remove a step by name. Raises if the step is not removable. */
78
116
  remove(stepName) {
79
- for (let i = 0; i < this._steps.length; i++) {
80
- if (this._steps[i].name === stepName) {
81
- if (!this._steps[i].removable) {
82
- throw new StepNotRemovableError(`Step '${stepName}' is not removable`);
83
- }
84
- this._steps.splice(i, 1);
85
- return;
86
- }
117
+ const idx = this._nameToIdx.get(stepName);
118
+ if (idx === undefined) {
119
+ throw new StepNotFoundError(`Step '${stepName}' not found`);
87
120
  }
88
- throw new StepNotFoundError(`Step '${stepName}' not found`);
121
+ if (!this._steps[idx].removable) {
122
+ throw new StepNotRemovableError(`Step '${stepName}' is not removable`);
123
+ }
124
+ this._steps.splice(idx, 1);
125
+ this._rebuildIndex();
89
126
  }
90
127
  /** Replace a step by name. Raises if the step is not replaceable. */
91
128
  replace(stepName, newStep) {
92
- for (let i = 0; i < this._steps.length; i++) {
93
- if (this._steps[i].name === stepName) {
94
- if (!this._steps[i].replaceable) {
95
- throw new StepNotReplaceableError(`Step '${stepName}' is not replaceable`);
96
- }
97
- this._steps[i] = newStep;
98
- return;
99
- }
129
+ const idx = this._nameToIdx.get(stepName);
130
+ if (idx === undefined) {
131
+ throw new StepNotFoundError(`Step '${stepName}' not found`);
132
+ }
133
+ if (!this._steps[idx].replaceable) {
134
+ throw new StepNotReplaceableError(`Step '${stepName}' is not replaceable`);
135
+ }
136
+ this._steps[idx] = newStep;
137
+ this._rebuildIndex();
138
+ }
139
+ /**
140
+ * Replace a step by name using replace semantics (§1.2).
141
+ *
142
+ * Calling configureStep twice with the same stepName always leaves exactly
143
+ * one step at that position — idempotent, never duplicates.
144
+ */
145
+ configureStep(stepName, newStep) {
146
+ const idx = this._nameToIdx.get(stepName);
147
+ if (idx === undefined) {
148
+ throw new PipelineStepNotFoundError(stepName);
149
+ }
150
+ if (!this._steps[idx].replaceable) {
151
+ throw new StepNotReplaceableError(`Step '${stepName}' is not replaceable`);
100
152
  }
101
- throw new StepNotFoundError(`Step '${stepName}' not found`);
153
+ // Guard: reject if newStep.name already exists at a different position.
154
+ // Allowing it would silently produce duplicate names in _steps and corrupt
155
+ // _nameToIdx (the second entry for that name would shadow the first).
156
+ if (newStep.name !== stepName && this._nameToIdx.has(newStep.name)) {
157
+ throw new StepNameDuplicateError(`Step '${newStep.name}' already exists at a different position`);
158
+ }
159
+ this._steps[idx] = newStep;
160
+ this._rebuildIndex();
102
161
  }
103
162
  /** Return the ordered list of step names. */
104
163
  stepNames() {
@@ -110,7 +169,7 @@ export class ExecutionStrategy {
110
169
  name: this.name,
111
170
  stepCount: this._steps.length,
112
171
  stepNames: this.stepNames(),
113
- description: this.stepNames().join(' \u2192 '),
172
+ description: this.stepNames().join(' '),
114
173
  };
115
174
  }
116
175
  }
@@ -165,11 +224,76 @@ export class StepNameDuplicateError extends ModuleError {
165
224
  this.name = 'StepNameDuplicateError';
166
225
  }
167
226
  }
227
+ /**
228
+ * Raised when a pipeline step fails (fail-fast, §1.1).
229
+ *
230
+ * Wraps the original exception from the failing step. When ignore_errors is
231
+ * true on the step, this error is NOT raised — execution continues instead.
232
+ */
233
+ export class PipelineStepError extends ModuleError {
234
+ static DEFAULT_RETRYABLE = false;
235
+ stepName;
236
+ pipelineTrace;
237
+ constructor(stepName, cause, trace, options) {
238
+ const causeMsg = cause?.message ?? 'unknown error';
239
+ super('PIPELINE_STEP_ERROR', `Pipeline step '${stepName}' failed: ${causeMsg}`, { stepName }, cause ?? undefined, options?.traceId, options?.retryable, options?.aiGuidance, options?.userFixable, options?.suggestion);
240
+ this.name = 'PipelineStepError';
241
+ this.stepName = stepName;
242
+ this.pipelineTrace = trace ?? null;
243
+ }
244
+ }
245
+ /**
246
+ * Raised at strategy construction when a step's declared `requires` are not
247
+ * provided by any preceding step (Issue #33 §2.1).
248
+ *
249
+ * This replaces the previous `console.warn` in `_validateDependencies`. The
250
+ * error names the offending step and the missing fields so the caller can
251
+ * fix the strategy definition before any step runs.
252
+ */
253
+ export class PipelineDependencyError extends ModuleError {
254
+ static DEFAULT_RETRYABLE = false;
255
+ stepName;
256
+ missingRequires;
257
+ constructor(stepName, missingRequires, options) {
258
+ super('PIPELINE_DEPENDENCY_ERROR', `Pipeline step '${stepName}' requires [${missingRequires.join(', ')}], but no preceding step provides ${missingRequires.length === 1 ? 'it' : 'them'}.`, { stepName, missingRequires: [...missingRequires] }, options?.cause, options?.traceId, options?.retryable, options?.aiGuidance, options?.userFixable, options?.suggestion);
259
+ this.name = 'PipelineDependencyError';
260
+ this.stepName = stepName;
261
+ this.missingRequires = [...missingRequires];
262
+ }
263
+ }
264
+ /** Raised when configureStep targets a step name that does not exist. */
265
+ export class PipelineStepNotFoundError extends ModuleError {
266
+ static DEFAULT_RETRYABLE = false;
267
+ stepName;
268
+ constructor(stepName = '', options) {
269
+ super('PIPELINE_STEP_NOT_FOUND', `Pipeline step not found: '${stepName}'`, { stepName }, options?.cause, options?.traceId, options?.retryable, options?.aiGuidance, options?.userFixable, options?.suggestion);
270
+ this.name = 'PipelineStepNotFoundError';
271
+ this.stepName = stepName;
272
+ }
273
+ }
168
274
  // ---------------------------------------------------------------------------
169
275
  // PipelineEngine
170
276
  // ---------------------------------------------------------------------------
171
277
  /** Executes an ExecutionStrategy against a PipelineContext, returning the final output and a complete execution trace. */
172
278
  export class PipelineEngine {
279
+ /**
280
+ * Registered step-lifecycle middlewares (Issue #33 §2.2). Invoked in
281
+ * registration order around every step's execute() call.
282
+ */
283
+ _stepMiddlewares = [];
284
+ /** Read-only view of the registered step middlewares. */
285
+ get stepMiddlewares() {
286
+ return this._stepMiddlewares;
287
+ }
288
+ /**
289
+ * Register a `StepMiddleware` to intercept every step's lifecycle
290
+ * (Issue #33 §2.2). beforeStep / afterStep run in registration order;
291
+ * onStepError is consulted in registration order until one returns a
292
+ * non-null recovery value.
293
+ */
294
+ addStepMiddleware(mw) {
295
+ this._stepMiddlewares.push(mw);
296
+ }
173
297
  /** Run every step in the strategy against ctx, respecting flow-control actions (continue, skip_to, abort). */
174
298
  async run(strategy, ctx) {
175
299
  const pipelineStart = performance.now();
@@ -182,6 +306,7 @@ export class PipelineEngine {
182
306
  success: false,
183
307
  };
184
308
  ctx.trace = trace;
309
+ const stepOutputs = {};
185
310
  let idx = 0;
186
311
  while (idx < steps.length) {
187
312
  const step = steps[idx];
@@ -219,8 +344,19 @@ export class PipelineEngine {
219
344
  idx += 1;
220
345
  continue;
221
346
  }
222
- // ③ Execute with per-step timeout
347
+ // ③ Execute with per-step timeout, wrapped in StepMiddleware hooks (§2.2)
223
348
  const stepStart = performance.now();
349
+ const stepState = {
350
+ stepName: step.name,
351
+ outputs: stepOutputs,
352
+ context: ctx,
353
+ };
354
+ // ③a beforeStep hooks (registration order)
355
+ for (const mw of this._stepMiddlewares) {
356
+ if (mw.beforeStep) {
357
+ await _maybeAwait(mw.beforeStep(step.name, stepState));
358
+ }
359
+ }
224
360
  let result;
225
361
  try {
226
362
  if (stepTimeoutMs > 0) {
@@ -240,14 +376,55 @@ export class PipelineEngine {
240
376
  }
241
377
  catch (exc) {
242
378
  const durationMs = performance.now() - stepStart;
379
+ const cause = exc instanceof Error ? exc : new Error(String(exc));
380
+ // ③b onStepError hooks: first non-null recovery wins (§2.2)
381
+ let recovery = null;
382
+ for (const mw of this._stepMiddlewares) {
383
+ if (!mw.onStepError)
384
+ continue;
385
+ const ret = await _maybeAwait(mw.onStepError(step.name, stepState, cause));
386
+ if (ret != null) {
387
+ recovery = ret;
388
+ break;
389
+ }
390
+ }
391
+ if (recovery != null) {
392
+ // The recovery value is informational — it's surfaced to afterStep
393
+ // hooks and recorded in the trace explanation, but NOT auto-merged
394
+ // into ctx.output. Middlewares that want to publish recovery state
395
+ // into output should mutate ctx.output directly inside onStepError.
396
+ const recoveredResult = {
397
+ action: 'continue',
398
+ explanation: `recovered from: ${cause.message}`,
399
+ };
400
+ trace.steps.push({
401
+ name: step.name,
402
+ durationMs,
403
+ result: recoveredResult,
404
+ skipped: false,
405
+ decisionPoint: false,
406
+ skipReason: 'error_recovered',
407
+ });
408
+ // afterStep hooks still fire on recovery — middlewares treat recovery
409
+ // as a successful (post-step) outcome and may want to record metrics.
410
+ for (const mw of this._stepMiddlewares) {
411
+ if (mw.afterStep) {
412
+ await _maybeAwait(mw.afterStep(step.name, stepState, recovery));
413
+ }
414
+ }
415
+ stepOutputs[step.name] = ctx.output != null ? { ...ctx.output } : null;
416
+ idx += 1;
417
+ continue;
418
+ }
243
419
  // ④ ignore_errors: log and continue
244
420
  if (stepIgnoreErrors) {
421
+ console.warn(`[apcore:pipeline] Step '${step.name}' failed (ignored):`, cause.message);
245
422
  trace.steps.push({
246
423
  name: step.name,
247
424
  durationMs,
248
425
  result: {
249
426
  action: 'continue',
250
- explanation: exc instanceof Error ? exc.message : String(exc),
427
+ explanation: cause.message,
251
428
  },
252
429
  skipped: false,
253
430
  decisionPoint: false,
@@ -256,21 +433,27 @@ export class PipelineEngine {
256
433
  idx += 1;
257
434
  continue;
258
435
  }
259
- // Not ignored: record and raise
436
+ // Fail-fast (§1.1): wrap in PipelineStepError with step name and cause
260
437
  trace.steps.push({
261
438
  name: step.name,
262
439
  durationMs,
263
440
  result: {
264
441
  action: 'abort',
265
- explanation: exc instanceof Error ? exc.message : String(exc),
442
+ explanation: cause.message,
266
443
  },
267
444
  skipped: false,
268
445
  decisionPoint: false,
269
446
  });
270
447
  trace.totalDurationMs = performance.now() - pipelineStart;
271
- throw exc;
448
+ throw new PipelineStepError(step.name, cause, trace);
272
449
  }
273
450
  const durationMs = performance.now() - stepStart;
451
+ // ③c afterStep hooks (registration order, success path)
452
+ for (const mw of this._stepMiddlewares) {
453
+ if (mw.afterStep) {
454
+ await _maybeAwait(mw.afterStep(step.name, stepState, result));
455
+ }
456
+ }
274
457
  // ⑤ Record trace
275
458
  trace.steps.push({
276
459
  name: step.name,
@@ -279,8 +462,23 @@ export class PipelineEngine {
279
462
  skipped: false,
280
463
  decisionPoint: result.confidence != null,
281
464
  });
282
- // ⑥ Handle abort / skip_to
465
+ // ⑥ Handle abort / skip_to / continue
283
466
  if (result.action === 'continue') {
467
+ // Snapshot output for run_until predicates (§1.4)
468
+ stepOutputs[step.name] = ctx.output != null ? { ...ctx.output } : null;
469
+ // ⑦ run_until: evaluate predicate after each successful continue (§1.4)
470
+ if (ctx.runUntil != null) {
471
+ const state = {
472
+ stepName: step.name,
473
+ outputs: stepOutputs,
474
+ context: ctx,
475
+ };
476
+ if (ctx.runUntil(state)) {
477
+ trace.totalDurationMs = performance.now() - pipelineStart;
478
+ trace.success = true;
479
+ return [ctx.output ?? null, trace];
480
+ }
481
+ }
284
482
  idx += 1;
285
483
  }
286
484
  else if (result.action === 'abort') {
@@ -290,8 +488,9 @@ export class PipelineEngine {
290
488
  }
291
489
  else if (result.action === 'skip_to') {
292
490
  const target = result.skipTo ?? '';
293
- const targetIdx = steps.findIndex((s, i) => i > idx && s.name === target);
294
- if (targetIdx === -1) {
491
+ // O(1) step index lookup (§1.5)
492
+ const targetIdx = strategy.findStepIndex(target);
493
+ if (targetIdx === undefined || targetIdx <= idx) {
295
494
  throw new StepNotFoundError(`skip_to target '${target}' not found after step '${step.name}'`);
296
495
  }
297
496
  // Mark skipped steps in trace
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,6 @@ export { getSchema } from './schema-export.js';
10
10
  export { VersionedStore, parseSemver, compareSemver, selectBestVersion } from './version.js';
11
11
  export { detectIdConflicts } from './conflicts.js';
12
12
  export type { ConflictResult, ConflictType, ConflictSeverity } from './conflicts.js';
13
+ export { classNameToSegment, discoverMultiClass } from './multi-class.js';
14
+ export type { ClassDescriptor, MultiClassEntry } from './multi-class.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -7,4 +7,5 @@ export { loadMetadata, parseDependencies, mergeModuleMetadata, loadIdMap } from
7
7
  export { getSchema } from './schema-export.js';
8
8
  export { VersionedStore, parseSemver, compareSemver, selectBestVersion } from './version.js';
9
9
  export { detectIdConflicts } from './conflicts.js';
10
+ export { classNameToSegment, discoverMultiClass } from './multi-class.js';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,57 @@
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
+ export interface ClassDescriptor {
7
+ readonly name: string;
8
+ readonly implementsModule: boolean;
9
+ }
10
+ export interface MultiClassEntry {
11
+ readonly moduleId: string;
12
+ readonly className: string;
13
+ }
14
+ /**
15
+ * Convert a class name to a snake_case segment per PROTOCOL_SPEC §2.1.1.
16
+ *
17
+ * Algorithm:
18
+ * 1. Insert boundary at ALLCAPS→CamelCase transitions (HTTPSender → HTTP_Sender).
19
+ * 2. Insert boundary at lowercase/digit→uppercase transitions (MathOps → Math_Ops).
20
+ * 3. Replace every non-alphanumeric character with `_`.
21
+ * 4. Lowercase.
22
+ * 5. Collapse consecutive `_` to a single `_`.
23
+ * 6. Strip leading and trailing `_`.
24
+ */
25
+ export declare function classNameToSegment(className: string): string;
26
+ /**
27
+ * Discover module IDs for classes in a single file under multi-class mode.
28
+ *
29
+ * Implements the Registry.discover_multi_class contract from PROTOCOL_SPEC §2.1.1.
30
+ *
31
+ * When multiClassEnabled is false (the default — multi-class mode is opt-in),
32
+ * only the first qualifying class is used and the bare base_id is returned.
33
+ *
34
+ * When multiClassEnabled is true and exactly one class qualifies:
35
+ * - If the class segment matches the file's last path segment (class named after
36
+ * the file), the bare base_id is returned to preserve existing module IDs.
37
+ * - Otherwise the class segment is appended: base_id.class_segment.
38
+ *
39
+ * @internal Prefer `Registry.discoverMultiClass` (D-15) for the canonical
40
+ * cross-language API surface; this free function is retained for backwards
41
+ * compatibility and direct use by the scanner.
42
+ *
43
+ * @throws ModuleIdConflictError — two classes produce the same class_segment
44
+ * @throws InvalidSegmentError — a segment does not match ^[a-z][a-z0-9_]*$
45
+ * @throws IdTooLongError — a derived module_id exceeds 192 characters
46
+ */
47
+ export declare function discoverMultiClass(filePath: string, classes: readonly ClassDescriptor[], extensionsRoot?: string, multiClassEnabled?: boolean): MultiClassEntry[];
48
+ /**
49
+ * Internal alias of {@link discoverMultiClass}. Use {@link Registry.discoverMultiClass}
50
+ * instead — this name is preserved so the scanner and other internal callers
51
+ * have a stable reference that signals the surface is not part of the public
52
+ * API.
53
+ *
54
+ * @internal
55
+ */
56
+ export declare const _discoverMultiClass: typeof discoverMultiClass;
57
+ //# sourceMappingURL=multi-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-class.d.ts","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO5D;AAYD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,cAAc,GAAE,MAAqB,EACrC,iBAAiB,GAAE,OAAe,GACjC,eAAe,EAAE,CA6DnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,2BAAqB,CAAC"}