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/async-task.js
CHANGED
|
@@ -10,6 +10,70 @@ export var TaskStatus;
|
|
|
10
10
|
TaskStatus["FAILED"] = "failed";
|
|
11
11
|
TaskStatus["CANCELLED"] = "cancelled";
|
|
12
12
|
})(TaskStatus || (TaskStatus = {}));
|
|
13
|
+
const TERMINAL_STATUSES = new Set([TaskStatus.COMPLETED, TaskStatus.FAILED, TaskStatus.CANCELLED]);
|
|
14
|
+
export class InMemoryTaskStore {
|
|
15
|
+
_data = new Map();
|
|
16
|
+
save(task) {
|
|
17
|
+
this._data.set(task.taskId, task);
|
|
18
|
+
}
|
|
19
|
+
get(taskId) {
|
|
20
|
+
return this._data.get(taskId) ?? null;
|
|
21
|
+
}
|
|
22
|
+
list(status) {
|
|
23
|
+
const all = [...this._data.values()];
|
|
24
|
+
return status ? all.filter(t => t.status === status) : all;
|
|
25
|
+
}
|
|
26
|
+
delete(taskId) {
|
|
27
|
+
this._data.delete(taskId);
|
|
28
|
+
}
|
|
29
|
+
listExpired(beforeTimestamp) {
|
|
30
|
+
return [...this._data.values()].filter(t => TERMINAL_STATUSES.has(t.status) && t.completedAt !== null && t.completedAt < beforeTimestamp);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Process-wide one-shot deprecation warning bookkeeping for {@link RetryConfig}
|
|
35
|
+
* (sync finding D-08). Mirrors the cross-language convention: warn once per
|
|
36
|
+
* unique deprecation key, then stay silent.
|
|
37
|
+
*/
|
|
38
|
+
const _RETRY_CONFIG_DEPRECATIONS_EMITTED = new Set();
|
|
39
|
+
function _emitRetryConfigDeprecation(key, message) {
|
|
40
|
+
if (_RETRY_CONFIG_DEPRECATIONS_EMITTED.has(key))
|
|
41
|
+
return;
|
|
42
|
+
_RETRY_CONFIG_DEPRECATIONS_EMITTED.add(key);
|
|
43
|
+
console.warn(message);
|
|
44
|
+
}
|
|
45
|
+
export class RetryConfig {
|
|
46
|
+
maxRetries;
|
|
47
|
+
retryDelayMs;
|
|
48
|
+
backoffMultiplier;
|
|
49
|
+
maxRetryDelayMs;
|
|
50
|
+
constructor(opts = {}) {
|
|
51
|
+
this.maxRetries = opts.maxRetries ?? 0;
|
|
52
|
+
this.retryDelayMs = opts.retryDelayMs ?? 1000;
|
|
53
|
+
this.backoffMultiplier = opts.backoffMultiplier ?? 2.0;
|
|
54
|
+
this.maxRetryDelayMs = opts.maxRetryDelayMs ?? 60000;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Compute the delay in milliseconds before the given retry attempt.
|
|
58
|
+
*
|
|
59
|
+
* Canonical cross-language name (sync finding D-08). Mirrors
|
|
60
|
+
* `RetryConfig.compute_delay_ms` in apcore-python and
|
|
61
|
+
* `RetryConfig::compute_delay_ms` in apcore-rust.
|
|
62
|
+
*/
|
|
63
|
+
computeDelayMs(attempt) {
|
|
64
|
+
return Math.min(this.retryDelayMs * Math.pow(this.backoffMultiplier, attempt), this.maxRetryDelayMs);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use {@link RetryConfig.computeDelayMs} instead. Will be removed
|
|
68
|
+
* in the next minor release. Sync finding D-08 — the canonical cross-language
|
|
69
|
+
* method name is `computeDelayMs` (Python `compute_delay_ms`,
|
|
70
|
+
* Rust `compute_delay_ms`).
|
|
71
|
+
*/
|
|
72
|
+
computeDelay(attempt) {
|
|
73
|
+
_emitRetryConfigDeprecation('RetryConfig.computeDelay', '[apcore] RetryConfig.computeDelay is deprecated; use computeDelayMs');
|
|
74
|
+
return this.computeDelayMs(attempt);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
13
77
|
/**
|
|
14
78
|
* Manages background execution of modules via Promises.
|
|
15
79
|
*
|
|
@@ -17,26 +81,33 @@ export var TaskStatus;
|
|
|
17
81
|
*/
|
|
18
82
|
export class AsyncTaskManager {
|
|
19
83
|
_executor;
|
|
84
|
+
_store;
|
|
20
85
|
_maxConcurrent;
|
|
21
86
|
_maxTasks;
|
|
22
|
-
|
|
87
|
+
_internal = new Map();
|
|
23
88
|
_runningCount = 0;
|
|
24
89
|
_waitQueue = [];
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
90
|
+
_reaper = null;
|
|
91
|
+
constructor(opts) {
|
|
92
|
+
this._executor = opts.executor;
|
|
93
|
+
this._store = opts.store ?? new InMemoryTaskStore();
|
|
94
|
+
this._maxConcurrent = opts.maxConcurrent ?? 10;
|
|
95
|
+
this._maxTasks = opts.maxTasks ?? 1000;
|
|
96
|
+
}
|
|
97
|
+
get store() {
|
|
98
|
+
return this._store;
|
|
29
99
|
}
|
|
30
100
|
/**
|
|
31
101
|
* Submit a module for background execution.
|
|
32
102
|
*
|
|
33
103
|
* Returns the generated task_id. Async to satisfy the cross-SDK protocol contract.
|
|
34
104
|
*/
|
|
35
|
-
async submit(moduleId, inputs,
|
|
36
|
-
if (this.
|
|
105
|
+
async submit(moduleId, inputs, opts) {
|
|
106
|
+
if (this._internal.size >= this._maxTasks) {
|
|
37
107
|
throw new Error(`Task limit reached (${this._maxTasks})`);
|
|
38
108
|
}
|
|
39
109
|
const taskId = uuidv4();
|
|
110
|
+
const retry = opts?.retry ?? null;
|
|
40
111
|
const info = {
|
|
41
112
|
taskId,
|
|
42
113
|
moduleId,
|
|
@@ -46,27 +117,29 @@ export class AsyncTaskManager {
|
|
|
46
117
|
completedAt: null,
|
|
47
118
|
result: null,
|
|
48
119
|
error: null,
|
|
120
|
+
retryCount: 0,
|
|
121
|
+
maxRetries: retry?.maxRetries ?? 0,
|
|
49
122
|
};
|
|
123
|
+
this._store.save(info);
|
|
50
124
|
let resolvePromise;
|
|
51
125
|
const promise = new Promise((resolve) => {
|
|
52
126
|
resolvePromise = resolve;
|
|
53
127
|
});
|
|
54
128
|
const internal = {
|
|
55
|
-
info,
|
|
56
129
|
promise,
|
|
57
130
|
cancelled: false,
|
|
58
131
|
resolve: resolvePromise,
|
|
59
132
|
};
|
|
60
|
-
this.
|
|
61
|
-
this._enqueue(taskId, moduleId, inputs, context ?? null);
|
|
133
|
+
this._internal.set(taskId, internal);
|
|
134
|
+
this._enqueue(taskId, moduleId, inputs, opts?.context ?? null, retry);
|
|
62
135
|
return taskId;
|
|
63
136
|
}
|
|
64
137
|
/**
|
|
65
138
|
* Return the TaskInfo for a task, or null if not found.
|
|
66
139
|
*/
|
|
67
140
|
getStatus(taskId) {
|
|
68
|
-
const
|
|
69
|
-
return
|
|
141
|
+
const info = this._store.get(taskId);
|
|
142
|
+
return info ? { ...info } : null;
|
|
70
143
|
}
|
|
71
144
|
/**
|
|
72
145
|
* Return the result of a completed task.
|
|
@@ -74,62 +147,57 @@ export class AsyncTaskManager {
|
|
|
74
147
|
* Throws if the task is not found or not in COMPLETED status.
|
|
75
148
|
*/
|
|
76
149
|
getResult(taskId) {
|
|
77
|
-
const
|
|
78
|
-
if (!
|
|
150
|
+
const info = this._store.get(taskId);
|
|
151
|
+
if (!info) {
|
|
79
152
|
throw new Error(`Task not found: ${taskId}`);
|
|
80
153
|
}
|
|
81
|
-
if (
|
|
82
|
-
throw new Error(`Task ${taskId} is not completed (status=${
|
|
154
|
+
if (info.status !== TaskStatus.COMPLETED) {
|
|
155
|
+
throw new Error(`Task ${taskId} is not completed (status=${info.status})`);
|
|
83
156
|
}
|
|
84
|
-
return
|
|
157
|
+
return info.result;
|
|
85
158
|
}
|
|
86
159
|
/**
|
|
87
160
|
* Cancel a running or pending task.
|
|
88
161
|
*
|
|
89
|
-
* Sets the cancelled flag and updates status immediately.
|
|
90
|
-
* The underlying execution may still be in-flight but its result
|
|
91
|
-
* will be discarded when it completes.
|
|
92
|
-
*
|
|
93
162
|
* Returns true if the task was successfully marked as cancelled.
|
|
94
|
-
* Async to satisfy the cross-SDK protocol contract.
|
|
95
163
|
*/
|
|
96
164
|
async cancel(taskId) {
|
|
97
|
-
const
|
|
98
|
-
if (!
|
|
165
|
+
const info = this._store.get(taskId);
|
|
166
|
+
if (!info)
|
|
99
167
|
return false;
|
|
100
|
-
const { info } = internal;
|
|
101
168
|
if (info.status !== TaskStatus.PENDING && info.status !== TaskStatus.RUNNING) {
|
|
102
169
|
return false;
|
|
103
170
|
}
|
|
171
|
+
const internal = this._internal.get(taskId);
|
|
172
|
+
if (!internal)
|
|
173
|
+
return false;
|
|
104
174
|
internal.cancelled = true;
|
|
105
175
|
info.status = TaskStatus.CANCELLED;
|
|
106
176
|
info.completedAt = Date.now() / 1000;
|
|
177
|
+
this._store.save(info);
|
|
107
178
|
return true;
|
|
108
179
|
}
|
|
109
180
|
/**
|
|
110
181
|
* Return all tasks, optionally filtered by status.
|
|
111
182
|
*/
|
|
112
183
|
listTasks(status) {
|
|
113
|
-
|
|
114
|
-
const filtered = status ? tasks.filter(t => t.info.status === status) : tasks;
|
|
115
|
-
return filtered.map(t => ({ ...t.info }));
|
|
184
|
+
return this._store.list(status).map(t => ({ ...t }));
|
|
116
185
|
}
|
|
117
186
|
/**
|
|
118
187
|
* Remove terminal-state tasks older than maxAgeSeconds seconds.
|
|
119
188
|
*
|
|
120
|
-
* Terminal states: COMPLETED, FAILED, CANCELLED.
|
|
121
189
|
* Returns the number of tasks removed.
|
|
122
190
|
*/
|
|
123
191
|
cleanup(maxAgeSeconds = 3600) {
|
|
124
|
-
const
|
|
125
|
-
const now = Date.now() / 1000;
|
|
192
|
+
const threshold = Date.now() / 1000 - maxAgeSeconds;
|
|
126
193
|
let removed = 0;
|
|
127
|
-
for (const
|
|
128
|
-
if (!
|
|
194
|
+
for (const task of this._store.list()) {
|
|
195
|
+
if (!TERMINAL_STATUSES.has(task.status))
|
|
129
196
|
continue;
|
|
130
|
-
const refTime =
|
|
131
|
-
if (
|
|
132
|
-
this.
|
|
197
|
+
const refTime = task.completedAt ?? task.submittedAt;
|
|
198
|
+
if (refTime <= threshold) {
|
|
199
|
+
this._store.delete(task.taskId);
|
|
200
|
+
this._internal.delete(task.taskId);
|
|
133
201
|
removed++;
|
|
134
202
|
}
|
|
135
203
|
}
|
|
@@ -140,17 +208,63 @@ export class AsyncTaskManager {
|
|
|
140
208
|
*/
|
|
141
209
|
async shutdown() {
|
|
142
210
|
const promises = [];
|
|
143
|
-
for (const
|
|
144
|
-
if (task.
|
|
145
|
-
|
|
146
|
-
|
|
211
|
+
for (const task of this._store.list()) {
|
|
212
|
+
if (task.status === TaskStatus.PENDING || task.status === TaskStatus.RUNNING) {
|
|
213
|
+
const internal = this._internal.get(task.taskId);
|
|
214
|
+
void this.cancel(task.taskId);
|
|
215
|
+
if (internal)
|
|
216
|
+
promises.push(internal.promise);
|
|
147
217
|
}
|
|
148
218
|
}
|
|
219
|
+
if (this._reaper) {
|
|
220
|
+
await this._reaper.stop();
|
|
221
|
+
}
|
|
149
222
|
await Promise.allSettled(promises);
|
|
150
223
|
}
|
|
151
224
|
/**
|
|
152
|
-
*
|
|
225
|
+
* Start a background reaper that periodically deletes expired terminal tasks.
|
|
226
|
+
*
|
|
227
|
+
* Returns a handle to stop the reaper. Throws if a reaper is already running.
|
|
153
228
|
*/
|
|
229
|
+
startReaper(opts = {}) {
|
|
230
|
+
if (this._reaper !== null) {
|
|
231
|
+
throw new Error('[apcore:async-task] Reaper already running; call stop() before starting again');
|
|
232
|
+
}
|
|
233
|
+
const ttlSeconds = opts.ttlSeconds ?? 3600;
|
|
234
|
+
const sweepIntervalMs = opts.sweepIntervalMs ?? 300000;
|
|
235
|
+
let stopped = false;
|
|
236
|
+
let timeoutHandle = null;
|
|
237
|
+
let resolveStop;
|
|
238
|
+
const stopPromise = new Promise((resolve) => { resolveStop = resolve; });
|
|
239
|
+
const sweep = () => {
|
|
240
|
+
if (stopped)
|
|
241
|
+
return;
|
|
242
|
+
const threshold = Date.now() / 1000 - ttlSeconds;
|
|
243
|
+
const expired = this._store.listExpired(threshold);
|
|
244
|
+
for (const task of expired) {
|
|
245
|
+
this._store.delete(task.taskId);
|
|
246
|
+
this._internal.delete(task.taskId);
|
|
247
|
+
}
|
|
248
|
+
if (!stopped) {
|
|
249
|
+
timeoutHandle = setTimeout(sweep, sweepIntervalMs);
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
timeoutHandle = setTimeout(sweep, sweepIntervalMs);
|
|
253
|
+
const handle = {
|
|
254
|
+
stop: async () => {
|
|
255
|
+
stopped = true;
|
|
256
|
+
this._reaper = null;
|
|
257
|
+
if (timeoutHandle !== null) {
|
|
258
|
+
clearTimeout(timeoutHandle);
|
|
259
|
+
timeoutHandle = null;
|
|
260
|
+
}
|
|
261
|
+
resolveStop();
|
|
262
|
+
await stopPromise;
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
this._reaper = handle;
|
|
266
|
+
return handle;
|
|
267
|
+
}
|
|
154
268
|
_acquireSlot() {
|
|
155
269
|
if (this._runningCount < this._maxConcurrent) {
|
|
156
270
|
this._runningCount++;
|
|
@@ -163,9 +277,6 @@ export class AsyncTaskManager {
|
|
|
163
277
|
});
|
|
164
278
|
});
|
|
165
279
|
}
|
|
166
|
-
/**
|
|
167
|
-
* Release a concurrency slot and notify the next waiter.
|
|
168
|
-
*/
|
|
169
280
|
_releaseSlot() {
|
|
170
281
|
this._runningCount--;
|
|
171
282
|
if (this._waitQueue.length > 0) {
|
|
@@ -173,44 +284,73 @@ export class AsyncTaskManager {
|
|
|
173
284
|
next();
|
|
174
285
|
}
|
|
175
286
|
}
|
|
176
|
-
|
|
177
|
-
* Enqueue the task for execution under the concurrency limit.
|
|
178
|
-
*/
|
|
179
|
-
_enqueue(taskId, moduleId, inputs, context) {
|
|
287
|
+
_enqueue(taskId, moduleId, inputs, context, retry) {
|
|
180
288
|
const run = async () => {
|
|
181
|
-
const internal = this.
|
|
289
|
+
const internal = this._internal.get(taskId);
|
|
182
290
|
if (!internal)
|
|
183
291
|
return;
|
|
292
|
+
// slotHeld tracks whether we currently hold a concurrency slot.
|
|
293
|
+
// We release it during backoff waits so other tasks can run.
|
|
294
|
+
let slotHeld = false;
|
|
184
295
|
try {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
296
|
+
// eslint-disable-next-line no-constant-condition
|
|
297
|
+
while (true) {
|
|
298
|
+
await this._acquireSlot();
|
|
299
|
+
slotHeld = true;
|
|
300
|
+
if (internal.cancelled)
|
|
301
|
+
return;
|
|
302
|
+
const info = this._store.get(taskId);
|
|
303
|
+
if (!info)
|
|
304
|
+
return;
|
|
305
|
+
info.status = TaskStatus.RUNNING;
|
|
306
|
+
info.startedAt = Date.now() / 1000;
|
|
307
|
+
this._store.save(info);
|
|
308
|
+
let execError = null;
|
|
309
|
+
let succeeded = false;
|
|
310
|
+
try {
|
|
311
|
+
const result = await this._executor.call(moduleId, inputs, context);
|
|
312
|
+
if (!internal.cancelled) {
|
|
313
|
+
info.status = TaskStatus.COMPLETED;
|
|
314
|
+
info.completedAt = Date.now() / 1000;
|
|
315
|
+
info.result = result;
|
|
316
|
+
this._store.save(info);
|
|
317
|
+
succeeded = true;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch (err) {
|
|
321
|
+
execError = err;
|
|
322
|
+
}
|
|
323
|
+
this._releaseSlot();
|
|
324
|
+
slotHeld = false;
|
|
325
|
+
if (succeeded || internal.cancelled)
|
|
326
|
+
return;
|
|
327
|
+
if (retry && info.retryCount < retry.maxRetries) {
|
|
328
|
+
const delay = retry.computeDelayMs(info.retryCount);
|
|
329
|
+
info.retryCount += 1;
|
|
330
|
+
info.status = TaskStatus.PENDING;
|
|
331
|
+
info.startedAt = null;
|
|
332
|
+
info.completedAt = null;
|
|
333
|
+
this._store.save(info);
|
|
334
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
335
|
+
if (internal.cancelled)
|
|
336
|
+
return;
|
|
337
|
+
// Loop continues: re-acquire slot and retry
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
info.status = TaskStatus.FAILED;
|
|
341
|
+
info.completedAt = Date.now() / 1000;
|
|
342
|
+
info.error = execError instanceof Error ? execError.message : String(execError);
|
|
343
|
+
this._store.save(info);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
206
346
|
}
|
|
207
347
|
}
|
|
208
348
|
finally {
|
|
209
|
-
|
|
349
|
+
if (slotHeld)
|
|
350
|
+
this._releaseSlot();
|
|
210
351
|
internal.resolve();
|
|
211
352
|
}
|
|
212
353
|
};
|
|
213
|
-
// Fire and forget -- errors are captured inside run()
|
|
214
354
|
run().catch((err) => {
|
|
215
355
|
console.warn('[apcore:async-task] Unexpected error in task runner:', err);
|
|
216
356
|
});
|
package/dist/async-task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-task.js","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"async-task.js","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"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"}
|
package/dist/builtin-steps.d.ts
CHANGED
|
@@ -38,16 +38,22 @@ export declare class BuiltinCallChainGuard implements Step {
|
|
|
38
38
|
constructor(config: Config | null);
|
|
39
39
|
execute(ctx: PipelineContext): Promise<StepResult>;
|
|
40
40
|
}
|
|
41
|
-
/** Resolves the module from the registry and sets ctx.module.
|
|
41
|
+
/** Resolves the module from the registry and sets ctx.module.
|
|
42
|
+
*
|
|
43
|
+
* Also checks the toggle state and raises ModuleDisabledError if the module
|
|
44
|
+
* has been disabled — inlined here to match the 11-step pipeline spec and
|
|
45
|
+
* apcore-python/apcore-rust implementations (sync finding A-D-011).
|
|
46
|
+
*/
|
|
42
47
|
export declare class BuiltinModuleLookup implements Step {
|
|
43
48
|
readonly name = "module_lookup";
|
|
44
|
-
readonly description = "Resolve module from registry";
|
|
49
|
+
readonly description = "Resolve module from registry, enforce toggle state";
|
|
45
50
|
readonly removable = false;
|
|
46
51
|
readonly replaceable = false;
|
|
47
52
|
readonly pure = true;
|
|
48
53
|
readonly provides: readonly ["module"];
|
|
49
54
|
private _registry;
|
|
50
|
-
|
|
55
|
+
private readonly _toggleState;
|
|
56
|
+
constructor(registry: Registry, toggleState?: ToggleState);
|
|
51
57
|
execute(ctx: PipelineContext): Promise<StepResult>;
|
|
52
58
|
}
|
|
53
59
|
/** Blocks execution if the module has been disabled via the toggle system. */
|
|
@@ -165,7 +171,11 @@ export interface StandardStrategyDeps {
|
|
|
165
171
|
middlewareManager: MiddlewareManager;
|
|
166
172
|
toggleState?: ToggleState | null;
|
|
167
173
|
}
|
|
168
|
-
/** Build the standard
|
|
174
|
+
/** Build the standard 11-step execution strategy matching PROTOCOL_SPEC §5 pipeline.
|
|
175
|
+
*
|
|
176
|
+
* Toggle-state check is inlined inside BuiltinModuleLookup (step 3), matching
|
|
177
|
+
* apcore-python and apcore-rust 11-step implementations (sync finding A-D-011).
|
|
178
|
+
*/
|
|
169
179
|
export declare function buildStandardStrategy(deps: StandardStrategyDeps): ExecutionStrategy;
|
|
170
180
|
/**
|
|
171
181
|
* Build an internal-only strategy: skips ACL and approval gates.
|
|
@@ -179,7 +189,8 @@ export declare function buildInternalStrategy(deps: StandardStrategyDeps): Execu
|
|
|
179
189
|
export declare function buildTestingStrategy(deps: StandardStrategyDeps): ExecutionStrategy;
|
|
180
190
|
/**
|
|
181
191
|
* Build a performance strategy: skips middleware before/after for reduced overhead.
|
|
182
|
-
* Retains toggle
|
|
192
|
+
* Retains toggle state, ACL, approval, and validation for correctness.
|
|
193
|
+
* Toggle-state check is inlined in BuiltinModuleLookup (sync finding A-D-011).
|
|
183
194
|
*/
|
|
184
195
|
export declare function buildPerformanceStrategy(deps: StandardStrategyDeps): ExecutionStrategy;
|
|
185
196
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-steps.d.ts","sourceRoot":"","sources":["../src/builtin-steps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"builtin-steps.d.ts","sourceRoot":"","sources":["../src/builtin-steps.ts"],"names":[],"mappings":"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"}
|