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
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
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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.
|
|
91
|
+
if (this._nameToIdx.has(step.name)) {
|
|
52
92
|
throw new StepNameDuplicateError(`Step '${step.name}' already exists`);
|
|
53
93
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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.
|
|
104
|
+
if (this._nameToIdx.has(step.name)) {
|
|
66
105
|
throw new StepNameDuplicateError(`Step '${step.name}' already exists`);
|
|
67
106
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
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('
|
|
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:
|
|
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
|
-
//
|
|
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:
|
|
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
|
|
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
|
-
|
|
294
|
-
|
|
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
|
package/dist/pipeline.js.map
CHANGED
|
@@ -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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"}
|
package/dist/registry/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/registry/index.js
CHANGED
|
@@ -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"}
|