apcore-js 0.19.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +173 -52
- 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/module.d.ts +94 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +99 -2
- package/dist/module.js.map +1 -1
- 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 +71 -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 +246 -5
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +485 -16
- package/dist/registry/registry.js.map +1 -1
- package/dist/schema/annotations.d.ts.map +1 -1
- package/dist/schema/annotations.js +1 -0
- package/dist/schema/annotations.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 +134 -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/README.md
CHANGED
|
@@ -20,12 +20,15 @@ apcore is an AI-Perceivable module standard that makes every interface naturally
|
|
|
20
20
|
|
|
21
21
|
- **Schema-driven modules** — Define input/output schemas with TypeBox for runtime validation
|
|
22
22
|
- **Executor pipeline** — Secured execution lifecycle: context → call chain guard → lookup → ACL → approval gate → middleware before → validation → execute → output validation → middleware after → return
|
|
23
|
-
- **Registry system** — File-based module discovery with metadata, dependencies, and topological ordering
|
|
23
|
+
- **Registry system** — File-based module discovery with metadata, dependencies, and topological ordering; multi-class discovery from a single file
|
|
24
24
|
- **Binding loader** — YAML-based module registration for no-code integration
|
|
25
25
|
- **Access control (ACL)** — Pattern-based rules with identity types, roles, and call-depth conditions
|
|
26
26
|
- **Approval system** — Pluggable approval gate in the executor pipeline with sync and async (polling) flows, built-in handlers, and tracing integration
|
|
27
|
-
- **Middleware** — Onion-model middleware with before/after/onError hooks and error recovery
|
|
28
|
-
- **Observability** — Tracing (spans + exporters), metrics (counters + histograms + Prometheus export), structured logging with
|
|
27
|
+
- **Middleware** — Onion-model middleware with before/after/onError hooks and error recovery; built-in `CircuitBreakerMiddleware` (CLOSED/OPEN/HALF_OPEN) and OTel-compatible `TracingMiddleware`
|
|
28
|
+
- **Observability** — Tracing (spans + `BatchSpanProcessor` + exporters), metrics (counters + histograms + Prometheus export with `/metrics`/`/healthz`/`/readyz`), structured logging with `RedactionConfig`
|
|
29
|
+
- **System modules** — Built-in `system.*` modules for AI bidirectional introspection: health, manifest, usage, and runtime control (`update_config`, `reload_module`, `toggle_feature`). Audit trail via `AuditStore`, config persistence via `overridesPath`, usage metrics in Prometheus, bulk reload via `path_filter` glob
|
|
30
|
+
- **Event system** — `EventEmitter` with subscriber-level `CircuitBreakerWrapper`, built-in `FileSubscriber`, `StdoutSubscriber`, `FilterSubscriber`, and pluggable custom types
|
|
31
|
+
- **Async tasks** — `AsyncTaskManager` with injectable `TaskStore` (bring your own Redis/Postgres backend), `RetryConfig` with exponential backoff, and opt-in background reaper
|
|
29
32
|
- **Schema export** — JSON/YAML schema export with strict and compact modes
|
|
30
33
|
- **Caching & pagination annotations** — `cacheable`, `cacheTtl`, `cacheKeyFields` for result caching; `paginated`, `paginationStyle` for paginated modules
|
|
31
34
|
- **Config Bus** — Namespace-based configuration registry with typed access, env prefix dispatch, hot-reload, and external config mounting (`Config.registerNamespace()`, `config.namespace()`, `config.bind<T>()`, `config.mount()`)
|
|
@@ -77,6 +80,39 @@ const preflight = await client.validate('math.add', { a: 10, b: 5 });
|
|
|
77
80
|
// => { valid: true, checks: [...], requiresApproval: false, errors: [] }
|
|
78
81
|
```
|
|
79
82
|
|
|
83
|
+
### Enabling sys_modules for control/events APIs
|
|
84
|
+
|
|
85
|
+
`APCore.disable`, `APCore.enable`, `APCore.on`, and `APCore.off` are gated on the
|
|
86
|
+
optional system-modules subsystem. They require a `Config` instance with
|
|
87
|
+
`sys_modules.enabled: true` to be passed into the `APCore` constructor —
|
|
88
|
+
otherwise the calls throw with a clear "sys_modules must be enabled" message.
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
import { APCore, Config } from 'apcore-js';
|
|
92
|
+
|
|
93
|
+
// Inline config (equivalent to writing the same YAML and calling Config.load):
|
|
94
|
+
const config = new Config({
|
|
95
|
+
sys_modules: {
|
|
96
|
+
enabled: true,
|
|
97
|
+
// Optional sub-systems:
|
|
98
|
+
events: { enabled: true }, // required for on/off (event emitter)
|
|
99
|
+
control: { enabled: true }, // required for disable/enable (toggle)
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const client = new APCore({ config });
|
|
104
|
+
|
|
105
|
+
// Now safe to call:
|
|
106
|
+
await client.disable('math.add');
|
|
107
|
+
await client.enable('math.add');
|
|
108
|
+
client.on('apcore.module.disabled', (event) => {
|
|
109
|
+
console.log('Disabled:', event.data);
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
If you do not need these control/events APIs, omit the `Config` entirely (as in
|
|
114
|
+
the basic Quick Start above).
|
|
115
|
+
|
|
80
116
|
### Advanced: Manual Registry + Executor
|
|
81
117
|
|
|
82
118
|
```typescript
|
|
@@ -103,14 +139,20 @@ const result = await executor.call('example.greet', { name: 'World' });
|
|
|
103
139
|
|
|
104
140
|
| Class | Description |
|
|
105
141
|
|-------|-------------|
|
|
106
|
-
| `APCore` | High-level client — register modules, call, stream, validate, listModules, describe, on/off, disable/enable |
|
|
142
|
+
| `APCore` | High-level client — register modules, call, stream, validate, listModules, describe, on/off, disable/enable. Note: `disable`, `enable`, `on`, and `off` require `sys_modules.enabled: true` in the `Config` passed to `APCore` (see [Quick Start: Enabling sys_modules](#enabling-sys_modules-for-controlevents-apis)). |
|
|
107
143
|
| `Registry` | Module storage — discover, register, get, list, watch |
|
|
108
144
|
| `Executor` | Execution engine — call with middleware pipeline, ACL, approval |
|
|
109
145
|
| `Context` | Request context — trace ID, identity, call chain, cancel token |
|
|
110
146
|
| `Config` | Configuration — load from YAML, namespace bus, get/set/bind values |
|
|
111
147
|
| `ACL` | Access control — rule-based caller/target authorization |
|
|
112
148
|
| `Middleware` | Pipeline hooks — before/after/onError interception |
|
|
149
|
+
| `CircuitBreakerMiddleware` | Per-(module, caller) circuit breaker — CLOSED/OPEN/HALF_OPEN with configurable threshold and cooldown |
|
|
150
|
+
| `TracingMiddleware` | OTel-compatible span tracing — accepts any `OtelTracer`/`OtelSpan` without runtime `@opentelemetry/*` dependency |
|
|
113
151
|
| `EventEmitter` | Event system — subscribe, emit, flush |
|
|
152
|
+
| `CircuitBreakerWrapper` | Subscriber-level circuit breaker — protects `EventEmitter` subscribers from cascading failures |
|
|
153
|
+
| `AsyncTaskManager` | Background task execution — injectable store, retry with backoff, opt-in reaper |
|
|
154
|
+
| `PrometheusExporter` | HTTP metrics server — `/metrics`, `/healthz`, `/readyz`; optional `usageCollector` for usage gauges |
|
|
155
|
+
| `InMemoryAuditStore` | Control module audit log — records actor, action, before/after change for every control call |
|
|
114
156
|
|
|
115
157
|
## Configuration
|
|
116
158
|
|
|
@@ -199,7 +241,7 @@ Configuration files support two modes. **Legacy mode** (no `apcore:` key) is ful
|
|
|
199
241
|
```yaml
|
|
200
242
|
# Namespace mode
|
|
201
243
|
apcore:
|
|
202
|
-
version: "0.
|
|
244
|
+
version: "0.20.0"
|
|
203
245
|
|
|
204
246
|
_config:
|
|
205
247
|
strict: true
|
|
@@ -214,6 +256,51 @@ myPlugin:
|
|
|
214
256
|
retries: 5
|
|
215
257
|
```
|
|
216
258
|
|
|
259
|
+
### System Modules
|
|
260
|
+
|
|
261
|
+
`registerSysModules()` auto-registers the built-in `system.*` modules that let AI agents query, monitor, and control the apcore runtime. Enable them via `sys_modules.enabled: true` in config, and pass the optional hardening options for production use:
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
import { registerSysModules, InMemoryAuditStore } from 'apcore-js';
|
|
265
|
+
|
|
266
|
+
const auditStore = new InMemoryAuditStore();
|
|
267
|
+
|
|
268
|
+
registerSysModules(registry, executor, config, null, {
|
|
269
|
+
failOnError: true, // throw on any registration failure (default: false)
|
|
270
|
+
overridesPath: '/etc/apcore/overrides.yaml', // persist runtime changes across restarts
|
|
271
|
+
auditStore, // record every control-module action with actor + change
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
// Available system modules:
|
|
275
|
+
// system.health.summary / system.health.module — health status + error rates
|
|
276
|
+
// system.manifest.module / system.manifest.full — module introspection
|
|
277
|
+
// system.usage.summary / system.usage.module — call counts + latency trends
|
|
278
|
+
// system.control.update_config — hot-patch config values
|
|
279
|
+
// system.control.reload_module — hot-reload from disk; supports path_filter glob
|
|
280
|
+
// system.control.toggle_feature — disable/enable modules at runtime
|
|
281
|
+
|
|
282
|
+
// Query the audit log after control calls:
|
|
283
|
+
const entries = auditStore.query({ moduleId: 'system.control.update_config' });
|
|
284
|
+
// entries[0] = { timestamp, action, targetModuleId, actorId, actorType, traceId, change }
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Prometheus usage metrics** — wire `PrometheusExporter` with the `UsageCollector` returned by `registerSysModules`:
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
import { PrometheusExporter, MetricsCollector } from 'apcore-js';
|
|
291
|
+
|
|
292
|
+
const ctx = registerSysModules(registry, executor, config);
|
|
293
|
+
const exporter = new PrometheusExporter({
|
|
294
|
+
collector: new MetricsCollector(),
|
|
295
|
+
usageCollector: ctx.usageCollector, // adds apcore_usage_* metrics to /metrics
|
|
296
|
+
});
|
|
297
|
+
exporter.start({ port: 9090 });
|
|
298
|
+
// GET /metrics now includes:
|
|
299
|
+
// apcore_usage_calls_total{module_id="math.add",status="success"} 5000
|
|
300
|
+
// apcore_usage_error_rate{module_id="math.add"} 0.0004
|
|
301
|
+
// apcore_usage_p99_latency_ms{module_id="math.add"} 45.0
|
|
302
|
+
```
|
|
303
|
+
|
|
217
304
|
### Error Codes
|
|
218
305
|
|
|
219
306
|
New error codes added in v0.15.0:
|
|
@@ -227,6 +314,17 @@ New error codes added in v0.15.0:
|
|
|
227
314
|
| `CONFIG_BIND_ERROR` | `config.bind<T>()` or `config.getTyped<T>()` type guard fails |
|
|
228
315
|
| `ERROR_FORMATTER_DUPLICATE` | `ErrorFormatterRegistry.register()` called for an already-registered surface |
|
|
229
316
|
|
|
317
|
+
New error codes added in v0.20.0:
|
|
318
|
+
|
|
319
|
+
| Code | Description |
|
|
320
|
+
|------|-------------|
|
|
321
|
+
| `CIRCUIT_BREAKER_OPEN` | `CircuitBreakerMiddleware` short-circuited a call because the circuit is OPEN |
|
|
322
|
+
| `MODULE_RELOAD_CONFLICT` | Both `module_id` and `path_filter` supplied to `system.control.reload_module` |
|
|
323
|
+
| `SYS_MODULE_REGISTRATION_FAILED` | `registerSysModules()` with `failOnError: true` and a module failed to register |
|
|
324
|
+
| `MODULE_ID_CONFLICT` | Two classes in the same file produce the same module ID segment (`discoverMultiClass`) |
|
|
325
|
+
| `INVALID_SEGMENT` | A derived class segment does not match `^[a-z][a-z0-9_]*$` |
|
|
326
|
+
| `ID_TOO_LONG` | A derived module ID exceeds 192 characters |
|
|
327
|
+
|
|
230
328
|
### Event Type Canonical Names
|
|
231
329
|
|
|
232
330
|
apcore 0.15.0 resolved two event-type collisions in favor of dot-namespaced canonical
|
|
@@ -445,12 +543,15 @@ npm run build
|
|
|
445
543
|
|
|
446
544
|
- Core executor pipeline
|
|
447
545
|
- Schema validation (strict mode, type coercion)
|
|
448
|
-
- Middleware chain (ordering, transforms, error recovery)
|
|
546
|
+
- Middleware chain (ordering, transforms, error recovery, circuit breaker)
|
|
449
547
|
- ACL enforcement (patterns, conditions, identity types)
|
|
450
|
-
- Registry system (scanner, metadata, entry points, dependencies)
|
|
548
|
+
- Registry system (scanner, metadata, entry points, dependencies, multi-class discovery)
|
|
451
549
|
- Binding loader (YAML loading, target resolution, schema modes)
|
|
452
|
-
- Observability (tracing, metrics, structured logging)
|
|
453
|
-
-
|
|
550
|
+
- Observability (tracing, BatchSpanProcessor, metrics, Prometheus export, structured logging with redaction)
|
|
551
|
+
- Event system (circuit breaker wrapper, subscriber types, filter/file/stdout)
|
|
552
|
+
- System modules (health, manifest, usage, control, audit trail, overrides persistence, Prometheus usage metrics)
|
|
553
|
+
- Async tasks (pluggable store, retry backoff, reaper)
|
|
554
|
+
- Cross-language conformance suite (`tests/conformance.test.ts`) — canonical JSON fixtures from `apcore/conformance/fixtures/` run identically across Python, TypeScript, and Rust SDKs
|
|
454
555
|
|
|
455
556
|
## Links
|
|
456
557
|
|
package/dist/acl.d.ts
CHANGED
|
@@ -23,6 +23,9 @@ export interface AuditEntry {
|
|
|
23
23
|
readonly roles: readonly string[];
|
|
24
24
|
readonly callDepth: number | null;
|
|
25
25
|
readonly traceId: string | null;
|
|
26
|
+
/** Error message from a condition handler that threw during evaluation, if any.
|
|
27
|
+
* Cross-language parity with apcore-python AuditEntry.handler_error (sync A-D-024). */
|
|
28
|
+
readonly handlerError: string | null;
|
|
26
29
|
}
|
|
27
30
|
export type AuditLogger = (entry: AuditEntry) => void;
|
|
28
31
|
export declare class ACL {
|
|
@@ -31,6 +34,21 @@ export declare class ACL {
|
|
|
31
34
|
static registerCondition(key: string, handler: ACLConditionHandler): void;
|
|
32
35
|
/** Register an async-aware handler for use specifically under asyncCheck(). Falls back to conditionHandlers. */
|
|
33
36
|
static registerAsyncCondition(key: string, handler: ACLConditionHandler): void;
|
|
37
|
+
/**
|
|
38
|
+
* Per-call-stack handler-error message captured by `_evaluateConditions[Async]`.
|
|
39
|
+
* Set inside catch blocks; consumed by `_buildAuditEntry` to populate
|
|
40
|
+
* `AuditEntry.handlerError`. Mirrors apcore-python's `_handler_error_var`
|
|
41
|
+
* contextvar (sync finding A-D-026). JS is single-threaded so a static field
|
|
42
|
+
* is sufficient — the accessor pair `_takeLastHandlerError()` and the
|
|
43
|
+
* implicit reset at each `check()` / `asyncCheck()` call ensures no leakage
|
|
44
|
+
* across evaluations.
|
|
45
|
+
*/
|
|
46
|
+
private static _lastHandlerError;
|
|
47
|
+
/**
|
|
48
|
+
* Read-and-clear the most recent handler-error message captured by an
|
|
49
|
+
* `_evaluateConditions[Async]` invocation.
|
|
50
|
+
*/
|
|
51
|
+
static _takeLastHandlerError(): string | null;
|
|
34
52
|
static _evaluateConditions(conditions: Record<string, unknown>, context: Context): boolean;
|
|
35
53
|
static _evaluateConditionsAsync(conditions: Record<string, unknown>, context: Context): Promise<boolean>;
|
|
36
54
|
private _rules;
|
package/dist/acl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAiB7D,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAiB7D,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;4FACwF;IACxF,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAsCtD,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA0C;IAC1E,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAA0C;IAE/E,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAIzE,gHAAgH;IAChH,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI9E;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAuB;IAEvD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAM7C,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;WA6B7E,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB9G,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA4B;IAChD,KAAK,EAAE,OAAO,CAAS;gBAEX,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,GAAE,MAAe,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAS9F,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IAqClC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO;IAqC7E,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCvG,OAAO,CAAC,mBAAmB;YAoBb,iBAAiB;IAY/B,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI5B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO;IAWtG,MAAM,IAAI,IAAI;CASf"}
|
package/dist/acl.js
CHANGED
|
@@ -51,25 +51,50 @@ export class ACL {
|
|
|
51
51
|
static registerAsyncCondition(key, handler) {
|
|
52
52
|
ACL.asyncConditionHandlers.set(key, handler);
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Per-call-stack handler-error message captured by `_evaluateConditions[Async]`.
|
|
56
|
+
* Set inside catch blocks; consumed by `_buildAuditEntry` to populate
|
|
57
|
+
* `AuditEntry.handlerError`. Mirrors apcore-python's `_handler_error_var`
|
|
58
|
+
* contextvar (sync finding A-D-026). JS is single-threaded so a static field
|
|
59
|
+
* is sufficient — the accessor pair `_takeLastHandlerError()` and the
|
|
60
|
+
* implicit reset at each `check()` / `asyncCheck()` call ensures no leakage
|
|
61
|
+
* across evaluations.
|
|
62
|
+
*/
|
|
63
|
+
static _lastHandlerError = null;
|
|
64
|
+
/**
|
|
65
|
+
* Read-and-clear the most recent handler-error message captured by an
|
|
66
|
+
* `_evaluateConditions[Async]` invocation.
|
|
67
|
+
*/
|
|
68
|
+
static _takeLastHandlerError() {
|
|
69
|
+
const err = ACL._lastHandlerError;
|
|
70
|
+
ACL._lastHandlerError = null;
|
|
71
|
+
return err;
|
|
72
|
+
}
|
|
54
73
|
static _evaluateConditions(conditions, context) {
|
|
55
74
|
for (const [key, value] of Object.entries(conditions)) {
|
|
56
75
|
const handler = ACL.conditionHandlers.get(key);
|
|
57
76
|
if (handler === undefined) {
|
|
58
|
-
|
|
77
|
+
const msg = `Unknown ACL condition '${key}'`;
|
|
78
|
+
ACL._lastHandlerError = msg;
|
|
79
|
+
console.warn(`[apcore:acl] ${msg} — treated as unsatisfied`);
|
|
59
80
|
return false;
|
|
60
81
|
}
|
|
61
82
|
try {
|
|
62
83
|
const result = handler.evaluate(value, context);
|
|
63
84
|
if (result instanceof Promise) {
|
|
64
85
|
// Async handler in sync context — fail-closed
|
|
65
|
-
|
|
86
|
+
const msg = `Async condition '${key}' in sync context — use asyncCheck()`;
|
|
87
|
+
ACL._lastHandlerError = msg;
|
|
88
|
+
console.warn(`[apcore:acl] ${msg}`);
|
|
66
89
|
return false;
|
|
67
90
|
}
|
|
68
91
|
if (!result)
|
|
69
92
|
return false;
|
|
70
93
|
}
|
|
71
|
-
catch {
|
|
72
|
-
|
|
94
|
+
catch (e) {
|
|
95
|
+
const msg = `Handler for condition '${key}' threw: ${e instanceof Error ? e.message : String(e)}`;
|
|
96
|
+
ACL._lastHandlerError = msg;
|
|
97
|
+
console.warn(`[apcore:acl] ${msg} — treated as unsatisfied`);
|
|
73
98
|
return false;
|
|
74
99
|
}
|
|
75
100
|
}
|
|
@@ -79,7 +104,9 @@ export class ACL {
|
|
|
79
104
|
for (const [key, value] of Object.entries(conditions)) {
|
|
80
105
|
const handler = ACL.asyncConditionHandlers.get(key) ?? ACL.conditionHandlers.get(key);
|
|
81
106
|
if (handler === undefined) {
|
|
82
|
-
|
|
107
|
+
const msg = `Unknown ACL condition '${key}'`;
|
|
108
|
+
ACL._lastHandlerError = msg;
|
|
109
|
+
console.warn(`[apcore:acl] ${msg} — treated as unsatisfied`);
|
|
83
110
|
return false;
|
|
84
111
|
}
|
|
85
112
|
try {
|
|
@@ -87,8 +114,10 @@ export class ACL {
|
|
|
87
114
|
if (!result)
|
|
88
115
|
return false;
|
|
89
116
|
}
|
|
90
|
-
catch {
|
|
91
|
-
|
|
117
|
+
catch (e) {
|
|
118
|
+
const msg = `Handler for condition '${key}' threw: ${e instanceof Error ? e.message : String(e)}`;
|
|
119
|
+
ACL._lastHandlerError = msg;
|
|
120
|
+
console.warn(`[apcore:acl] ${msg} — treated as unsatisfied`);
|
|
92
121
|
return false;
|
|
93
122
|
}
|
|
94
123
|
}
|
|
@@ -142,23 +171,28 @@ export class ACL {
|
|
|
142
171
|
check(callerId, targetId, context) {
|
|
143
172
|
const effectiveCaller = callerId === null ? '@external' : callerId;
|
|
144
173
|
const ctx = context ?? null;
|
|
145
|
-
// Snapshot rules
|
|
146
|
-
//
|
|
174
|
+
// Snapshot rules + defaultEffect + auditLogger atomically so concurrent
|
|
175
|
+
// addRule/removeRule/setDefaultEffect calls cannot mutate state mid-evaluation.
|
|
176
|
+
// Mirrors asyncCheck snapshot semantics for sync/async parity.
|
|
147
177
|
const rules = this._rules.slice();
|
|
178
|
+
const defaultEffect = this._defaultEffect;
|
|
179
|
+
const auditLogger = this._auditLogger;
|
|
180
|
+
// Clear any leftover handler-error captured by a previous evaluation.
|
|
181
|
+
ACL._takeLastHandlerError();
|
|
148
182
|
for (let idx = 0; idx < rules.length; idx++) {
|
|
149
183
|
const rule = rules[idx];
|
|
150
184
|
if (this._matchesRule(rule, effectiveCaller, targetId, ctx)) {
|
|
151
185
|
const decision = rule.effect === 'allow';
|
|
152
|
-
if (
|
|
153
|
-
|
|
186
|
+
if (auditLogger) {
|
|
187
|
+
auditLogger(this._buildAuditEntry(effectiveCaller, targetId, decision ? 'allow' : 'deny', 'rule_match', rule, idx, ctx, ACL._takeLastHandlerError()));
|
|
154
188
|
}
|
|
155
189
|
return decision;
|
|
156
190
|
}
|
|
157
191
|
}
|
|
158
|
-
const defaultDecision =
|
|
159
|
-
if (
|
|
192
|
+
const defaultDecision = defaultEffect === 'allow';
|
|
193
|
+
if (auditLogger) {
|
|
160
194
|
const reason = rules.length === 0 ? 'no_rules' : 'default_effect';
|
|
161
|
-
|
|
195
|
+
auditLogger(this._buildAuditEntry(effectiveCaller, targetId, defaultDecision ? 'allow' : 'deny', reason, null, null, ctx, ACL._takeLastHandlerError()));
|
|
162
196
|
}
|
|
163
197
|
return defaultDecision;
|
|
164
198
|
}
|
|
@@ -170,12 +204,14 @@ export class ACL {
|
|
|
170
204
|
const rules = this._rules.slice();
|
|
171
205
|
const defaultEffect = this._defaultEffect;
|
|
172
206
|
const auditLogger = this._auditLogger;
|
|
207
|
+
// Clear any leftover handler-error captured by a previous evaluation.
|
|
208
|
+
ACL._takeLastHandlerError();
|
|
173
209
|
for (let idx = 0; idx < rules.length; idx++) {
|
|
174
210
|
const rule = rules[idx];
|
|
175
211
|
if (await this._matchesRuleAsync(rule, effectiveCaller, targetId, ctx)) {
|
|
176
212
|
const decision = rule.effect === 'allow';
|
|
177
213
|
if (auditLogger) {
|
|
178
|
-
auditLogger(this._buildAuditEntry(effectiveCaller, targetId, decision ? 'allow' : 'deny', 'rule_match', rule, idx, ctx));
|
|
214
|
+
auditLogger(this._buildAuditEntry(effectiveCaller, targetId, decision ? 'allow' : 'deny', 'rule_match', rule, idx, ctx, ACL._takeLastHandlerError()));
|
|
179
215
|
}
|
|
180
216
|
return decision;
|
|
181
217
|
}
|
|
@@ -183,7 +219,7 @@ export class ACL {
|
|
|
183
219
|
const defaultDecision = defaultEffect === 'allow';
|
|
184
220
|
if (auditLogger) {
|
|
185
221
|
const reason = rules.length === 0 ? 'no_rules' : 'default_effect';
|
|
186
|
-
auditLogger(this._buildAuditEntry(effectiveCaller, targetId, defaultDecision ? 'allow' : 'deny', reason, null, null, ctx));
|
|
222
|
+
auditLogger(this._buildAuditEntry(effectiveCaller, targetId, defaultDecision ? 'allow' : 'deny', reason, null, null, ctx, ACL._takeLastHandlerError()));
|
|
187
223
|
}
|
|
188
224
|
return defaultDecision;
|
|
189
225
|
}
|
|
@@ -220,7 +256,7 @@ export class ACL {
|
|
|
220
256
|
}
|
|
221
257
|
return true;
|
|
222
258
|
}
|
|
223
|
-
_buildAuditEntry(callerId, targetId, decision, reason, matchedRule, matchedRuleIndex, context) {
|
|
259
|
+
_buildAuditEntry(callerId, targetId, decision, reason, matchedRule, matchedRuleIndex, context, handlerError = null) {
|
|
224
260
|
let identityType = null;
|
|
225
261
|
let roles = [];
|
|
226
262
|
let callDepth = null;
|
|
@@ -245,6 +281,7 @@ export class ACL {
|
|
|
245
281
|
roles,
|
|
246
282
|
callDepth,
|
|
247
283
|
traceId,
|
|
284
|
+
handlerError,
|
|
248
285
|
};
|
|
249
286
|
}
|
|
250
287
|
_matchPattern(pattern, value, context) {
|
package/dist/acl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl.js","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acl.js","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"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"}
|
package/dist/async-task.d.ts
CHANGED
|
@@ -19,6 +19,59 @@ export interface TaskInfo {
|
|
|
19
19
|
readonly completedAt: number | null;
|
|
20
20
|
readonly result: Record<string, unknown> | null;
|
|
21
21
|
readonly error: string | null;
|
|
22
|
+
readonly retryCount: number;
|
|
23
|
+
readonly maxRetries: number;
|
|
24
|
+
}
|
|
25
|
+
export interface TaskStore {
|
|
26
|
+
save(task: TaskInfo): void;
|
|
27
|
+
get(taskId: string): TaskInfo | null;
|
|
28
|
+
list(status?: TaskStatus): TaskInfo[];
|
|
29
|
+
delete(taskId: string): void;
|
|
30
|
+
listExpired(beforeTimestamp: number): TaskInfo[];
|
|
31
|
+
}
|
|
32
|
+
export declare class InMemoryTaskStore implements TaskStore {
|
|
33
|
+
private readonly _data;
|
|
34
|
+
save(task: TaskInfo): void;
|
|
35
|
+
get(taskId: string): TaskInfo | null;
|
|
36
|
+
list(status?: TaskStatus): TaskInfo[];
|
|
37
|
+
delete(taskId: string): void;
|
|
38
|
+
listExpired(beforeTimestamp: number): TaskInfo[];
|
|
39
|
+
}
|
|
40
|
+
export declare class RetryConfig {
|
|
41
|
+
readonly maxRetries: number;
|
|
42
|
+
readonly retryDelayMs: number;
|
|
43
|
+
readonly backoffMultiplier: number;
|
|
44
|
+
readonly maxRetryDelayMs: number;
|
|
45
|
+
constructor(opts?: {
|
|
46
|
+
maxRetries?: number;
|
|
47
|
+
retryDelayMs?: number;
|
|
48
|
+
backoffMultiplier?: number;
|
|
49
|
+
maxRetryDelayMs?: number;
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Compute the delay in milliseconds before the given retry attempt.
|
|
53
|
+
*
|
|
54
|
+
* Canonical cross-language name (sync finding D-08). Mirrors
|
|
55
|
+
* `RetryConfig.compute_delay_ms` in apcore-python and
|
|
56
|
+
* `RetryConfig::compute_delay_ms` in apcore-rust.
|
|
57
|
+
*/
|
|
58
|
+
computeDelayMs(attempt: number): number;
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Use {@link RetryConfig.computeDelayMs} instead. Will be removed
|
|
61
|
+
* in the next minor release. Sync finding D-08 — the canonical cross-language
|
|
62
|
+
* method name is `computeDelayMs` (Python `compute_delay_ms`,
|
|
63
|
+
* Rust `compute_delay_ms`).
|
|
64
|
+
*/
|
|
65
|
+
computeDelay(attempt: number): number;
|
|
66
|
+
}
|
|
67
|
+
export interface ReaperHandle {
|
|
68
|
+
stop(): Promise<void>;
|
|
69
|
+
}
|
|
70
|
+
interface AsyncTaskManagerOptions {
|
|
71
|
+
executor: Executor;
|
|
72
|
+
store?: TaskStore;
|
|
73
|
+
maxConcurrent?: number;
|
|
74
|
+
maxTasks?: number;
|
|
22
75
|
}
|
|
23
76
|
/**
|
|
24
77
|
* Manages background execution of modules via Promises.
|
|
@@ -27,18 +80,24 @@ export interface TaskInfo {
|
|
|
27
80
|
*/
|
|
28
81
|
export declare class AsyncTaskManager {
|
|
29
82
|
private readonly _executor;
|
|
83
|
+
private readonly _store;
|
|
30
84
|
private readonly _maxConcurrent;
|
|
31
85
|
private readonly _maxTasks;
|
|
32
|
-
private readonly
|
|
86
|
+
private readonly _internal;
|
|
33
87
|
private _runningCount;
|
|
34
88
|
private readonly _waitQueue;
|
|
35
|
-
|
|
89
|
+
private _reaper;
|
|
90
|
+
constructor(opts: AsyncTaskManagerOptions);
|
|
91
|
+
get store(): TaskStore;
|
|
36
92
|
/**
|
|
37
93
|
* Submit a module for background execution.
|
|
38
94
|
*
|
|
39
95
|
* Returns the generated task_id. Async to satisfy the cross-SDK protocol contract.
|
|
40
96
|
*/
|
|
41
|
-
submit(moduleId: string, inputs: Record<string, unknown>,
|
|
97
|
+
submit(moduleId: string, inputs: Record<string, unknown>, opts?: {
|
|
98
|
+
context?: Context | null;
|
|
99
|
+
retry?: RetryConfig;
|
|
100
|
+
}): Promise<string>;
|
|
42
101
|
/**
|
|
43
102
|
* Return the TaskInfo for a task, or null if not found.
|
|
44
103
|
*/
|
|
@@ -52,12 +111,7 @@ export declare class AsyncTaskManager {
|
|
|
52
111
|
/**
|
|
53
112
|
* Cancel a running or pending task.
|
|
54
113
|
*
|
|
55
|
-
* Sets the cancelled flag and updates status immediately.
|
|
56
|
-
* The underlying execution may still be in-flight but its result
|
|
57
|
-
* will be discarded when it completes.
|
|
58
|
-
*
|
|
59
114
|
* Returns true if the task was successfully marked as cancelled.
|
|
60
|
-
* Async to satisfy the cross-SDK protocol contract.
|
|
61
115
|
*/
|
|
62
116
|
cancel(taskId: string): Promise<boolean>;
|
|
63
117
|
/**
|
|
@@ -67,7 +121,6 @@ export declare class AsyncTaskManager {
|
|
|
67
121
|
/**
|
|
68
122
|
* Remove terminal-state tasks older than maxAgeSeconds seconds.
|
|
69
123
|
*
|
|
70
|
-
* Terminal states: COMPLETED, FAILED, CANCELLED.
|
|
71
124
|
* Returns the number of tasks removed.
|
|
72
125
|
*/
|
|
73
126
|
cleanup(maxAgeSeconds?: number): number;
|
|
@@ -76,16 +129,17 @@ export declare class AsyncTaskManager {
|
|
|
76
129
|
*/
|
|
77
130
|
shutdown(): Promise<void>;
|
|
78
131
|
/**
|
|
79
|
-
*
|
|
132
|
+
* Start a background reaper that periodically deletes expired terminal tasks.
|
|
133
|
+
*
|
|
134
|
+
* Returns a handle to stop the reaper. Throws if a reaper is already running.
|
|
80
135
|
*/
|
|
136
|
+
startReaper(opts?: {
|
|
137
|
+
ttlSeconds?: number;
|
|
138
|
+
sweepIntervalMs?: number;
|
|
139
|
+
}): ReaperHandle;
|
|
81
140
|
private _acquireSlot;
|
|
82
|
-
/**
|
|
83
|
-
* Release a concurrency slot and notify the next waiter.
|
|
84
|
-
*/
|
|
85
141
|
private _releaseSlot;
|
|
86
|
-
/**
|
|
87
|
-
* Enqueue the task for execution under the concurrency limit.
|
|
88
|
-
*/
|
|
89
142
|
private _enqueue;
|
|
90
143
|
}
|
|
144
|
+
export {};
|
|
91
145
|
//# sourceMappingURL=async-task.d.ts.map
|
package/dist/async-task.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-task.d.ts","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;
|
|
1
|
+
{"version":3,"file":"async-task.d.ts","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"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"}
|