apcore-js 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +110 -9
  2. package/dist/acl.d.ts +18 -0
  3. package/dist/acl.d.ts.map +1 -1
  4. package/dist/acl.js +54 -17
  5. package/dist/acl.js.map +1 -1
  6. package/dist/async-task.d.ts +70 -16
  7. package/dist/async-task.d.ts.map +1 -1
  8. package/dist/async-task.js +212 -72
  9. package/dist/async-task.js.map +1 -1
  10. package/dist/builtin-steps.d.ts +16 -5
  11. package/dist/builtin-steps.d.ts.map +1 -1
  12. package/dist/builtin-steps.js +45 -28
  13. package/dist/builtin-steps.js.map +1 -1
  14. package/dist/config.d.ts +38 -0
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +163 -33
  17. package/dist/config.js.map +1 -1
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +12 -1
  20. package/dist/context.js.map +1 -1
  21. package/dist/errors.d.ts +32 -10
  22. package/dist/errors.d.ts.map +1 -1
  23. package/dist/errors.js +55 -16
  24. package/dist/errors.js.map +1 -1
  25. package/dist/events/circuit-breaker.d.ts +45 -0
  26. package/dist/events/circuit-breaker.d.ts.map +1 -0
  27. package/dist/events/circuit-breaker.js +115 -0
  28. package/dist/events/circuit-breaker.js.map +1 -0
  29. package/dist/events/emitter.d.ts +22 -1
  30. package/dist/events/emitter.d.ts.map +1 -1
  31. package/dist/events/emitter.js +66 -2
  32. package/dist/events/emitter.js.map +1 -1
  33. package/dist/events/index.d.ts +4 -2
  34. package/dist/events/index.d.ts.map +1 -1
  35. package/dist/events/index.js +3 -2
  36. package/dist/events/index.js.map +1 -1
  37. package/dist/events/subscribers.d.ts +33 -1
  38. package/dist/events/subscribers.d.ts.map +1 -1
  39. package/dist/events/subscribers.js +124 -1
  40. package/dist/events/subscribers.js.map +1 -1
  41. package/dist/executor.d.ts +10 -2
  42. package/dist/executor.d.ts.map +1 -1
  43. package/dist/executor.js +173 -52
  44. package/dist/executor.js.map +1 -1
  45. package/dist/generated/version.d.ts +1 -1
  46. package/dist/generated/version.js +1 -1
  47. package/dist/index.d.ts +35 -25
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +23 -17
  50. package/dist/index.js.map +1 -1
  51. package/dist/middleware/base.d.ts +25 -3
  52. package/dist/middleware/base.d.ts.map +1 -1
  53. package/dist/middleware/base.js +24 -0
  54. package/dist/middleware/base.js.map +1 -1
  55. package/dist/middleware/circuit-breaker.d.ts +54 -0
  56. package/dist/middleware/circuit-breaker.d.ts.map +1 -0
  57. package/dist/middleware/circuit-breaker.js +168 -0
  58. package/dist/middleware/circuit-breaker.js.map +1 -0
  59. package/dist/middleware/context-namespace.d.ts +30 -0
  60. package/dist/middleware/context-namespace.d.ts.map +1 -0
  61. package/dist/middleware/context-namespace.js +38 -0
  62. package/dist/middleware/context-namespace.js.map +1 -0
  63. package/dist/middleware/index.d.ts +7 -1
  64. package/dist/middleware/index.d.ts.map +1 -1
  65. package/dist/middleware/index.js +4 -1
  66. package/dist/middleware/index.js.map +1 -1
  67. package/dist/middleware/manager.d.ts +11 -4
  68. package/dist/middleware/manager.d.ts.map +1 -1
  69. package/dist/middleware/manager.js +25 -9
  70. package/dist/middleware/manager.js.map +1 -1
  71. package/dist/middleware/platform-notify.d.ts +8 -4
  72. package/dist/middleware/platform-notify.d.ts.map +1 -1
  73. package/dist/middleware/platform-notify.js +11 -7
  74. package/dist/middleware/platform-notify.js.map +1 -1
  75. package/dist/middleware/tracing.d.ts +50 -0
  76. package/dist/middleware/tracing.d.ts.map +1 -0
  77. package/dist/middleware/tracing.js +89 -0
  78. package/dist/middleware/tracing.js.map +1 -0
  79. package/dist/module.d.ts +94 -2
  80. package/dist/module.d.ts.map +1 -1
  81. package/dist/module.js +99 -2
  82. package/dist/module.js.map +1 -1
  83. package/dist/observability/batch-span-processor.d.ts +48 -0
  84. package/dist/observability/batch-span-processor.d.ts.map +1 -0
  85. package/dist/observability/batch-span-processor.js +89 -0
  86. package/dist/observability/batch-span-processor.js.map +1 -0
  87. package/dist/observability/context-logger.d.ts +54 -1
  88. package/dist/observability/context-logger.d.ts.map +1 -1
  89. package/dist/observability/context-logger.js +270 -6
  90. package/dist/observability/context-logger.js.map +1 -1
  91. package/dist/observability/error-history.d.ts +36 -7
  92. package/dist/observability/error-history.d.ts.map +1 -1
  93. package/dist/observability/error-history.js +169 -50
  94. package/dist/observability/error-history.js.map +1 -1
  95. package/dist/observability/index.d.ts +16 -5
  96. package/dist/observability/index.d.ts.map +1 -1
  97. package/dist/observability/index.js +8 -3
  98. package/dist/observability/index.js.map +1 -1
  99. package/dist/observability/metrics.d.ts +14 -1
  100. package/dist/observability/metrics.d.ts.map +1 -1
  101. package/dist/observability/metrics.js +23 -2
  102. package/dist/observability/metrics.js.map +1 -1
  103. package/dist/observability/prometheus-exporter.d.ts +37 -0
  104. package/dist/observability/prometheus-exporter.d.ts.map +1 -0
  105. package/dist/observability/prometheus-exporter.js +135 -0
  106. package/dist/observability/prometheus-exporter.js.map +1 -0
  107. package/dist/observability/storage.d.ts +43 -0
  108. package/dist/observability/storage.d.ts.map +1 -0
  109. package/dist/observability/storage.js +58 -0
  110. package/dist/observability/storage.js.map +1 -0
  111. package/dist/observability/store.d.ts +29 -0
  112. package/dist/observability/store.d.ts.map +1 -0
  113. package/dist/observability/store.js +36 -0
  114. package/dist/observability/store.js.map +1 -0
  115. package/dist/observability/usage-exporter.d.ts +58 -0
  116. package/dist/observability/usage-exporter.d.ts.map +1 -0
  117. package/dist/observability/usage-exporter.js +86 -0
  118. package/dist/observability/usage-exporter.js.map +1 -0
  119. package/dist/observability/usage.d.ts +18 -1
  120. package/dist/observability/usage.d.ts.map +1 -1
  121. package/dist/observability/usage.js +25 -3
  122. package/dist/observability/usage.js.map +1 -1
  123. package/dist/pipeline-config.d.ts +11 -0
  124. package/dist/pipeline-config.d.ts.map +1 -1
  125. package/dist/pipeline-config.js +36 -10
  126. package/dist/pipeline-config.js.map +1 -1
  127. package/dist/pipeline.d.ts +123 -2
  128. package/dist/pipeline.d.ts.map +1 -1
  129. package/dist/pipeline.js +249 -50
  130. package/dist/pipeline.js.map +1 -1
  131. package/dist/registry/index.d.ts +2 -0
  132. package/dist/registry/index.d.ts.map +1 -1
  133. package/dist/registry/index.js +1 -0
  134. package/dist/registry/index.js.map +1 -1
  135. package/dist/registry/multi-class.d.ts +71 -0
  136. package/dist/registry/multi-class.d.ts.map +1 -0
  137. package/dist/registry/multi-class.js +120 -0
  138. package/dist/registry/multi-class.js.map +1 -0
  139. package/dist/registry/registry.d.ts +246 -5
  140. package/dist/registry/registry.d.ts.map +1 -1
  141. package/dist/registry/registry.js +485 -16
  142. package/dist/registry/registry.js.map +1 -1
  143. package/dist/schema/annotations.d.ts.map +1 -1
  144. package/dist/schema/annotations.js +1 -0
  145. package/dist/schema/annotations.js.map +1 -1
  146. package/dist/schema/constants.d.ts +9 -0
  147. package/dist/schema/constants.d.ts.map +1 -0
  148. package/dist/schema/constants.js +9 -0
  149. package/dist/schema/constants.js.map +1 -0
  150. package/dist/schema/index.d.ts +1 -1
  151. package/dist/schema/index.d.ts.map +1 -1
  152. package/dist/schema/index.js +1 -1
  153. package/dist/schema/index.js.map +1 -1
  154. package/dist/schema/loader.d.ts +27 -3
  155. package/dist/schema/loader.d.ts.map +1 -1
  156. package/dist/schema/loader.js +137 -32
  157. package/dist/schema/loader.js.map +1 -1
  158. package/dist/schema/types.d.ts +4 -0
  159. package/dist/schema/types.d.ts.map +1 -1
  160. package/dist/schema/types.js.map +1 -1
  161. package/dist/schema/validator.d.ts +9 -0
  162. package/dist/schema/validator.d.ts.map +1 -1
  163. package/dist/schema/validator.js +153 -4
  164. package/dist/schema/validator.js.map +1 -1
  165. package/dist/sys-modules/audit.d.ts +50 -0
  166. package/dist/sys-modules/audit.d.ts.map +1 -0
  167. package/dist/sys-modules/audit.js +89 -0
  168. package/dist/sys-modules/audit.js.map +1 -0
  169. package/dist/sys-modules/control.d.ts +32 -4
  170. package/dist/sys-modules/control.d.ts.map +1 -1
  171. package/dist/sys-modules/control.js +196 -25
  172. package/dist/sys-modules/control.js.map +1 -1
  173. package/dist/sys-modules/index.d.ts +7 -2
  174. package/dist/sys-modules/index.d.ts.map +1 -1
  175. package/dist/sys-modules/index.js +3 -1
  176. package/dist/sys-modules/index.js.map +1 -1
  177. package/dist/sys-modules/overrides.d.ts +58 -0
  178. package/dist/sys-modules/overrides.d.ts.map +1 -0
  179. package/dist/sys-modules/overrides.js +106 -0
  180. package/dist/sys-modules/overrides.js.map +1 -0
  181. package/dist/sys-modules/registration.d.ts +17 -12
  182. package/dist/sys-modules/registration.d.ts.map +1 -1
  183. package/dist/sys-modules/registration.js +134 -23
  184. package/dist/sys-modules/registration.js.map +1 -1
  185. package/dist/sys-modules/toggle.d.ts +7 -2
  186. package/dist/sys-modules/toggle.d.ts.map +1 -1
  187. package/dist/sys-modules/toggle.js +61 -5
  188. package/dist/sys-modules/toggle.js.map +1 -1
  189. package/dist/trace-context.d.ts +47 -9
  190. package/dist/trace-context.d.ts.map +1 -1
  191. package/dist/trace-context.js +139 -16
  192. package/dist/trace-context.js.map +1 -1
  193. package/package.json +1 -1
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 redaction
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.18.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
- - Integration tests (end-to-end flows, error propagation, safety checks)
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;CACjC;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,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;WAyB7E,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB9G,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;IAgC7E,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCvG,OAAO,CAAC,mBAAmB;YAoBb,iBAAiB;IAY/B,OAAO,CAAC,gBAAgB;IAsCxB,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"}
1
+ {"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"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"}
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
- console.warn(`[apcore:acl] Unknown ACL condition '${key}' — treated as unsatisfied`);
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
- console.warn(`[apcore:acl] Async condition '${key}' in sync context — treated as unsatisfied. Use asyncCheck().`);
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
- console.warn(`[apcore:acl] Handler for condition '${key}' threw treated as unsatisfied`);
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
- console.warn(`[apcore:acl] Unknown ACL condition '${key}' — treated as unsatisfied`);
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
- console.warn(`[apcore:acl] Handler for condition '${key}' threw treated as unsatisfied`);
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 so concurrent addRule/removeRule calls cannot mutate the
146
- // list mid-evaluation (relevant for asyncCheck across await points).
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 (this._auditLogger) {
153
- this._auditLogger(this._buildAuditEntry(effectiveCaller, targetId, decision ? 'allow' : 'deny', 'rule_match', rule, idx, ctx));
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 = this._defaultEffect === 'allow';
159
- if (this._auditLogger) {
192
+ const defaultDecision = defaultEffect === 'allow';
193
+ if (auditLogger) {
160
194
  const reason = rules.length === 0 ? 'no_rules' : 'default_effect';
161
- this._auditLogger(this._buildAuditEntry(effectiveCaller, targetId, defaultDecision ? 'allow' : 'deny', reason, null, null, ctx));
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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"}
@@ -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 _tasks;
86
+ private readonly _internal;
33
87
  private _runningCount;
34
88
  private readonly _waitQueue;
35
- constructor(executor: Executor, maxConcurrent?: number, maxTasks?: number);
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>, context?: Context | null): Promise<string>;
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
- * Acquire a concurrency slot. Resolves when a slot is available.
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
@@ -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;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAWD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAExC,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAE,MAAW,EAAE,QAAQ,GAAE,MAAa;IAMnF;;;;OAIG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GACvB,OAAO,CAAC,MAAM,CAAC;IAiClB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAK1C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWlD;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe9C;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,EAAE;IAM1C;;;;;OAKG;IACH,OAAO,CAAC,aAAa,GAAE,MAAa,GAAG,MAAM;IAiB7C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAgDjB"}
1
+ {"version":3,"file":"async-task.d.ts","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"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"}