apcore-js 0.21.1 → 0.22.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 (114) hide show
  1. package/README.md +33 -3
  2. package/dist/acl-handlers.d.ts.map +1 -1
  3. package/dist/acl-handlers.js +5 -0
  4. package/dist/acl-handlers.js.map +1 -1
  5. package/dist/async-task.d.ts +49 -14
  6. package/dist/async-task.d.ts.map +1 -1
  7. package/dist/async-task.js +134 -39
  8. package/dist/async-task.js.map +1 -1
  9. package/dist/bindings.d.ts +1 -1
  10. package/dist/bindings.d.ts.map +1 -1
  11. package/dist/bindings.js +8 -5
  12. package/dist/bindings.js.map +1 -1
  13. package/dist/browser/index.d.ts +2 -2
  14. package/dist/browser/index.d.ts.map +1 -1
  15. package/dist/browser/index.js +2 -2
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/builtin-steps.d.ts +14 -12
  18. package/dist/builtin-steps.d.ts.map +1 -1
  19. package/dist/builtin-steps.js +81 -28
  20. package/dist/builtin-steps.js.map +1 -1
  21. package/dist/cancel.d.ts +23 -2
  22. package/dist/cancel.d.ts.map +1 -1
  23. package/dist/cancel.js +31 -6
  24. package/dist/cancel.js.map +1 -1
  25. package/dist/client.d.ts +3 -0
  26. package/dist/client.d.ts.map +1 -1
  27. package/dist/client.js +7 -3
  28. package/dist/client.js.map +1 -1
  29. package/dist/config.d.ts +27 -0
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +33 -1
  32. package/dist/config.js.map +1 -1
  33. package/dist/context.d.ts +36 -3
  34. package/dist/context.d.ts.map +1 -1
  35. package/dist/context.js +94 -11
  36. package/dist/context.js.map +1 -1
  37. package/dist/errors.d.ts +64 -1
  38. package/dist/errors.d.ts.map +1 -1
  39. package/dist/errors.js +101 -7
  40. package/dist/errors.js.map +1 -1
  41. package/dist/events/emitter.d.ts +46 -12
  42. package/dist/events/emitter.d.ts.map +1 -1
  43. package/dist/events/emitter.js +146 -56
  44. package/dist/events/emitter.js.map +1 -1
  45. package/dist/events/index.d.ts +2 -1
  46. package/dist/events/index.d.ts.map +1 -1
  47. package/dist/events/index.js +1 -1
  48. package/dist/events/index.js.map +1 -1
  49. package/dist/events/retry.d.ts +35 -0
  50. package/dist/events/retry.d.ts.map +1 -0
  51. package/dist/events/retry.js +52 -0
  52. package/dist/events/retry.js.map +1 -0
  53. package/dist/events/subscribers.d.ts +52 -9
  54. package/dist/events/subscribers.d.ts.map +1 -1
  55. package/dist/events/subscribers.js +96 -63
  56. package/dist/events/subscribers.js.map +1 -1
  57. package/dist/executor.d.ts +4 -1
  58. package/dist/executor.d.ts.map +1 -1
  59. package/dist/executor.js +143 -16
  60. package/dist/executor.js.map +1 -1
  61. package/dist/generated/version.d.ts +1 -1
  62. package/dist/generated/version.js +1 -1
  63. package/dist/index.d.ts +7 -5
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +6 -4
  66. package/dist/index.js.map +1 -1
  67. package/dist/middleware/circuit-breaker.d.ts +2 -2
  68. package/dist/middleware/circuit-breaker.d.ts.map +1 -1
  69. package/dist/middleware/circuit-breaker.js +19 -19
  70. package/dist/middleware/circuit-breaker.js.map +1 -1
  71. package/dist/middleware/index.d.ts +1 -1
  72. package/dist/middleware/index.d.ts.map +1 -1
  73. package/dist/middleware/index.js +1 -1
  74. package/dist/middleware/index.js.map +1 -1
  75. package/dist/middleware/manager.d.ts +6 -2
  76. package/dist/middleware/manager.d.ts.map +1 -1
  77. package/dist/middleware/manager.js +36 -1
  78. package/dist/middleware/manager.js.map +1 -1
  79. package/dist/middleware/platform-notify.d.ts +2 -3
  80. package/dist/middleware/platform-notify.d.ts.map +1 -1
  81. package/dist/middleware/platform-notify.js +5 -6
  82. package/dist/middleware/platform-notify.js.map +1 -1
  83. package/dist/pipeline.d.ts +1 -1
  84. package/dist/pipeline.js +11 -11
  85. package/dist/pipeline.js.map +1 -1
  86. package/dist/registry/registry.d.ts +46 -2
  87. package/dist/registry/registry.d.ts.map +1 -1
  88. package/dist/registry/registry.js +271 -31
  89. package/dist/registry/registry.js.map +1 -1
  90. package/dist/schema/ref-resolver.d.ts.map +1 -1
  91. package/dist/schema/ref-resolver.js +2 -2
  92. package/dist/schema/ref-resolver.js.map +1 -1
  93. package/dist/schema/types.d.ts.map +1 -1
  94. package/dist/schema/types.js +1 -1
  95. package/dist/schema/types.js.map +1 -1
  96. package/dist/schema/validator.d.ts.map +1 -1
  97. package/dist/schema/validator.js +11 -20
  98. package/dist/schema/validator.js.map +1 -1
  99. package/dist/streaming.d.ts +21 -0
  100. package/dist/streaming.d.ts.map +1 -0
  101. package/dist/streaming.js +32 -0
  102. package/dist/streaming.js.map +1 -0
  103. package/dist/sys-modules/registration.d.ts.map +1 -1
  104. package/dist/sys-modules/registration.js +18 -8
  105. package/dist/sys-modules/registration.js.map +1 -1
  106. package/package.json +6 -3
  107. package/dist/registry/index.d.ts +0 -15
  108. package/dist/registry/index.d.ts.map +0 -1
  109. package/dist/registry/index.js +0 -11
  110. package/dist/registry/index.js.map +0 -1
  111. package/dist/schema/index.d.ts +0 -11
  112. package/dist/schema/index.d.ts.map +0 -1
  113. package/dist/schema/index.js +0 -9
  114. package/dist/schema/index.js.map +0 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # apcore
6
6
 
7
- [![TypeScript](https://img.shields.io/badge/TypeScript-Node_18+-blue.svg)](https://github.com/aiperceivable/apcore-typescript)
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Node_20+-blue.svg)](https://github.com/aiperceivable/apcore-typescript)
8
8
  [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
9
9
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12294/badge)](https://www.bestpractices.dev/projects/12294)
10
10
 
@@ -33,6 +33,17 @@ apcore is an AI-Perceivable module standard that makes every interface naturally
33
33
  - **Caching & pagination annotations** — `cacheable`, `cacheTtl`, `cacheKeyFields` for result caching; `paginated`, `paginationStyle` for paginated modules
34
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()`)
35
35
 
36
+ ## What's New in v0.22.0
37
+
38
+ - **`ContextKey<T>` typed context state** (#63) — Type-safe accessor for `Context.data` slots with `get`/`set`/`delete`/`exists`/`scoped`; also available via the `apcore-js/context-keys` subpath import for tree-shakeable consumers.
39
+ - **`StreamingModule` interface** (#62) — Formal streaming contract via `STREAMING_MARKER` symbol; `isStreamingModule()` detects implementations and emits `StreamingInterfaceError` when contract is violated.
40
+ - **Middleware duplicate detection** (#64) — `MiddlewareManager.add(mw, { allowDuplicate, identityKey })` rejects accidental double-registration; opt-out and custom identity keys supported for explicit duplicates.
41
+ - **Event retry + DLQ** (#61) — `EventSubscriber` now exposes a `retry` config field (max attempts + exponential backoff) and an optional `onFailure(event, error, attemptCount)` hook acting as a per-subscriber dead-letter queue.
42
+ - **Registry async deferred-publish** (#65) — `Registry.register()` returns a `Promise<void>`; modules with an async `onLoad()` stay hidden from `get()`/`has()` until load completes, and `apcore.registry.module_load_failed` is emitted on rejection.
43
+ - **Reserved-namespace query API** (#60) — `Config.reservedNamespaces` static getter and top-level `RESERVED_NAMESPACES` export let callers pre-validate namespace names before calling `Config.registerNamespace()`.
44
+
45
+ See [`examples/v022-tour.ts`](./examples/v022-tour.ts) for a runnable tour of each surface.
46
+
36
47
  ## Documentation
37
48
 
38
49
  For full documentation, including Quick Start guides and API reference, visit:
@@ -40,7 +51,7 @@ For full documentation, including Quick Start guides and API reference, visit:
40
51
 
41
52
  ## Requirements
42
53
 
43
- - Node.js >= 18.0.0
54
+ - Node.js >= 20.0.0
44
55
  - TypeScript >= 5.5
45
56
 
46
57
  ## Installation
@@ -51,6 +62,25 @@ npm install apcore-js
51
62
 
52
63
  > **Note:** The npm package is published as `apcore-js` (the `apcore` name is reserved on npm). Python uses `apcore`, Rust uses the `apcore` crate.
53
64
 
65
+ ## Browser support
66
+
67
+ `apcore-js` ships dual entry points via `package.json` conditional exports:
68
+
69
+ - **Node (default):** `./dist/index.js` — the full surface.
70
+ - **Browser:** `./dist/browser/index.js` — auto-selected by tree-shaking bundlers (Vite, Webpack, esbuild, Rollup) through the `"browser"` exports condition.
71
+
72
+ The browser bundle **excludes** Node-only surfaces:
73
+
74
+ - `Config` class, `BindingLoader`, `SchemaLoader` (filesystem-bound)
75
+ - All `system.*` sys-modules (control, manifest, health, usage, audit)
76
+ - Events runtime: `EventEmitter`, all built-in subscribers, `AsyncTaskManager`, `TaskStatus`
77
+ - Observability runtime: `TracingMiddleware`, `MetricsCollector`, exporters, `PrometheusExporter`
78
+ - `RESERVED_NAMESPACES`, `StreamingInterfaceError`, `DuplicateModuleIdError`
79
+
80
+ `ACL.load(yamlPath)` throws `ACLRuleError` in the browser because the filesystem is unavailable; ACL programmatic construction still works.
81
+
82
+ **Available in the browser:** `Registry` programmatic `register`/`get`/`list`/`iter`/`unregister`, `Executor`, `ACL` programmatic, `Context`, middleware pipeline, schema validation, all error classes, and the utility helpers.
83
+
54
84
  ## Quick Start
55
85
 
56
86
  ### Simplified Client (Recommended)
@@ -241,7 +271,7 @@ Configuration files support two modes. **Legacy mode** (no `apcore:` key) is ful
241
271
  ```yaml
242
272
  # Namespace mode
243
273
  apcore:
244
- version: "0.20.0"
274
+ version: "0.22.0"
245
275
 
246
276
  _config:
247
277
  strict: true
@@ -1 +1 @@
1
- {"version":3,"file":"acl-handlers.d.ts","sourceRoot":"","sources":["../src/acl-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,kFAAkF;AAClF,MAAM,MAAM,MAAM,GAAG,CACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC;AAEb,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,CACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;AAMtB,0DAA0D;AAC1D,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAKpD;AAED,4EAA4E;AAC5E,qBAAa,YAAa,YAAW,mBAAmB;IACtD,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAMpD;AAED,yDAAyD;AACzD,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAgBpD;AAMD,wEAAwE;AACxE,qBAAa,SAAU,YAAW,mBAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,UAAU,EAAE,MAAM;IAI9B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAQpD;AAED,sEAAsE;AACtE,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,UAAU,EAAE,MAAM;IAI9B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAIpD;AAED,4EAA4E;AAC5E,qBAAa,cAAe,YAAW,mBAAmB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;gBAE5B,UAAU,EAAE,WAAW;IAI7B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAQnE;AAED,2EAA2E;AAC3E,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;gBAE5B,UAAU,EAAE,WAAW;IAI7B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAInE;AAMD,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAM/D;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAyBzD"}
1
+ {"version":3,"file":"acl-handlers.d.ts","sourceRoot":"","sources":["../src/acl-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,kFAAkF;AAClF,MAAM,MAAM,MAAM,GAAG,CACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC;AAEb,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,CACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;AAMtB,0DAA0D;AAC1D,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAKpD;AAED,4EAA4E;AAC5E,qBAAa,YAAa,YAAW,mBAAmB;IACtD,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAMpD;AAED,yDAAyD;AACzD,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAqBpD;AAMD,wEAAwE;AACxE,qBAAa,SAAU,YAAW,mBAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,UAAU,EAAE,MAAM;IAI9B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAQpD;AAED,sEAAsE;AACtE,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,UAAU,EAAE,MAAM;IAI9B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAIpD;AAED,4EAA4E;AAC5E,qBAAa,cAAe,YAAW,mBAAmB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;gBAE5B,UAAU,EAAE,WAAW;IAI7B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAQnE;AAED,2EAA2E;AAC3E,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;gBAE5B,UAAU,EAAE,WAAW;IAI7B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAInE;AAMD,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAM/D;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAyBzD"}
@@ -44,6 +44,11 @@ export class MaxCallDepthHandler {
44
44
  else {
45
45
  return false;
46
46
  }
47
+ // Fail closed on non-integer thresholds (e.g. 5.5). A fractional depth is
48
+ // meaningless and must not silently ALLOW where Python/Rust reject.
49
+ if (!Number.isInteger(threshold)) {
50
+ return false;
51
+ }
47
52
  return context.callChain.length <= threshold;
48
53
  }
49
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acl-handlers.js","sourceRoot":"","sources":["../src/acl-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acl-handlers.js","sourceRoot":"","sources":["../src/acl-handlers.ts"],"names":[],"mappings":"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"}
@@ -22,20 +22,30 @@ export interface TaskInfo {
22
22
  readonly retryCount: number;
23
23
  readonly maxRetries: number;
24
24
  }
25
+ /**
26
+ * Pluggable task storage backend.
27
+ *
28
+ * Spec D-17 (apcore v0.22.0): every method MUST be asynchronous so that
29
+ * Redis-, SQL-, and other I/O-backed stores can be plugged in without
30
+ * blocking the event loop. `InMemoryTaskStore` exposes async signatures
31
+ * even though its operations are CPU-only — uniform shape lets stores
32
+ * compose generically. Supersedes the partially-sync contract that
33
+ * existed in apcore-typescript through v0.21.x.
34
+ */
25
35
  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[];
36
+ save(task: TaskInfo): Promise<void>;
37
+ get(taskId: string): Promise<TaskInfo | null>;
38
+ list(status?: TaskStatus): Promise<TaskInfo[]>;
39
+ delete(taskId: string): Promise<void>;
40
+ listExpired(beforeTimestamp: number): Promise<TaskInfo[]>;
31
41
  }
32
42
  export declare class InMemoryTaskStore implements TaskStore {
33
43
  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[];
44
+ save(task: TaskInfo): Promise<void>;
45
+ get(taskId: string): Promise<TaskInfo | null>;
46
+ list(status?: TaskStatus): Promise<TaskInfo[]>;
47
+ delete(taskId: string): Promise<void>;
48
+ listExpired(beforeTimestamp: number): Promise<TaskInfo[]>;
39
49
  }
40
50
  export declare class RetryConfig {
41
51
  readonly maxRetries: number;
@@ -101,33 +111,39 @@ export declare class AsyncTaskManager {
101
111
  /**
102
112
  * Return the TaskInfo for a task, or null if not found.
103
113
  */
104
- getStatus(taskId: string): TaskInfo | null;
114
+ getStatus(taskId: string): Promise<TaskInfo | null>;
105
115
  /**
106
116
  * Return the result of a completed task.
107
117
  *
108
118
  * Throws if the task is not found or not in COMPLETED status.
109
119
  */
110
- getResult(taskId: string): Record<string, unknown>;
120
+ getResult(taskId: string): Promise<Record<string, unknown>>;
111
121
  /**
112
122
  * Cancel a running or pending task.
113
123
  *
114
124
  * Returns true if the task was successfully marked as cancelled.
125
+ *
126
+ * D-18 (v0.22.0): calling `cancel()` aborts the running executor invocation
127
+ * via the CancelToken's underlying AbortSignal — modules performing standard
128
+ * Web-API I/O (`fetch`, `setTimeout`, Web Streams) participate in real abort.
115
129
  */
116
130
  cancel(taskId: string): Promise<boolean>;
117
131
  /**
118
132
  * Return all tasks, optionally filtered by status.
119
133
  */
120
- listTasks(status?: TaskStatus): TaskInfo[];
134
+ listTasks(status?: TaskStatus): Promise<TaskInfo[]>;
121
135
  /**
122
136
  * Remove terminal-state tasks older than maxAgeSeconds seconds.
123
137
  *
124
138
  * Returns the number of tasks removed.
125
139
  */
126
- cleanup(maxAgeSeconds?: number): number;
140
+ cleanup(maxAgeSeconds?: number): Promise<number>;
127
141
  /**
128
142
  * Cancel all pending and running tasks and wait for them to settle.
129
143
  */
130
144
  shutdown(): Promise<void>;
145
+ /** Count tasks in PENDING or RUNNING state across the store. */
146
+ private _countActiveTasks;
131
147
  /**
132
148
  * Start a background reaper that periodically deletes expired terminal tasks.
133
149
  *
@@ -140,6 +156,25 @@ export declare class AsyncTaskManager {
140
156
  private _acquireSlot;
141
157
  private _releaseSlot;
142
158
  private _enqueue;
159
+ /**
160
+ * Sleep for `delayMs`, resolving early if `cancelToken` is aborted (A-D-004).
161
+ *
162
+ * The timer is cleared and the abort listener detached on whichever path
163
+ * resolves first, so neither leaks. A cancel issued mid-backoff resolves
164
+ * promptly rather than waiting out the full retry delay.
165
+ */
166
+ private _sleepUntilCancelled;
167
+ /**
168
+ * Build the Context to hand to `executor.call()` for a task attempt.
169
+ *
170
+ * If the caller supplied a Context we shallow-clone it with the task's
171
+ * CancelToken attached; if no Context was supplied we create a fresh one
172
+ * via the public `Context.create()` factory with the token already bound
173
+ * (per Issue #66, `cancelToken` is now a first-class create() parameter).
174
+ * Either way the executor sees a Context whose `cancelToken` is the same
175
+ * instance that `AsyncTaskManager.cancel()` aborts (D-18).
176
+ */
177
+ private _buildTaskContext;
143
178
  }
144
179
  export {};
145
180
  //# sourceMappingURL=async-task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"async-task.d.ts","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async-task.d.ts","sourceRoot":"","sources":["../src/async-task.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * Async task manager for background module execution.
3
3
  */
4
4
  import { v4 as uuidv4 } from 'uuid';
5
+ import { CancelToken } from './cancel.js';
6
+ import { TaskLimitExceededError } from './errors.js';
5
7
  export var TaskStatus;
6
8
  (function (TaskStatus) {
7
9
  TaskStatus["PENDING"] = "pending";
@@ -13,20 +15,20 @@ export var TaskStatus;
13
15
  const TERMINAL_STATUSES = new Set([TaskStatus.COMPLETED, TaskStatus.FAILED, TaskStatus.CANCELLED]);
14
16
  export class InMemoryTaskStore {
15
17
  _data = new Map();
16
- save(task) {
18
+ async save(task) {
17
19
  this._data.set(task.taskId, task);
18
20
  }
19
- get(taskId) {
21
+ async get(taskId) {
20
22
  return this._data.get(taskId) ?? null;
21
23
  }
22
- list(status) {
24
+ async list(status) {
23
25
  const all = [...this._data.values()];
24
26
  return status ? all.filter(t => t.status === status) : all;
25
27
  }
26
- delete(taskId) {
28
+ async delete(taskId) {
27
29
  this._data.delete(taskId);
28
30
  }
29
- listExpired(beforeTimestamp) {
31
+ async listExpired(beforeTimestamp) {
30
32
  return [...this._data.values()].filter(t => TERMINAL_STATUSES.has(t.status) && t.completedAt !== null && t.completedAt < beforeTimestamp);
31
33
  }
32
34
  }
@@ -103,8 +105,13 @@ export class AsyncTaskManager {
103
105
  * Returns the generated task_id. Async to satisfy the cross-SDK protocol contract.
104
106
  */
105
107
  async submit(moduleId, inputs, opts) {
106
- if (this._internal.size >= this._maxTasks) {
107
- throw new Error(`Task limit reached (${this._maxTasks})`);
108
+ // A-D-AT-01 (apcore v0.22.0): max_tasks counts active (PENDING|RUNNING)
109
+ // tasks only completed/failed/cancelled tasks remain in `_internal` for
110
+ // bookkeeping but must not count toward the live concurrency cap. Mirrors
111
+ // Python `_ACTIVE_STATUSES` filter.
112
+ const active = await this._countActiveTasks();
113
+ if (active >= this._maxTasks) {
114
+ throw new TaskLimitExceededError(this._maxTasks);
108
115
  }
109
116
  const taskId = uuidv4();
110
117
  const retry = opts?.retry ?? null;
@@ -120,25 +127,29 @@ export class AsyncTaskManager {
120
127
  retryCount: 0,
121
128
  maxRetries: retry?.maxRetries ?? 0,
122
129
  };
123
- this._store.save(info);
130
+ await this._store.save(info);
124
131
  let resolvePromise;
125
132
  const promise = new Promise((resolve) => {
126
133
  resolvePromise = resolve;
127
134
  });
135
+ // D-18: every submitted task owns a CancelToken so AsyncTaskManager.cancel()
136
+ // produces a real AbortSignal abort, not just a cooperative flag.
137
+ const cancelToken = new CancelToken();
128
138
  const internal = {
129
139
  promise,
130
140
  cancelled: false,
131
141
  resolve: resolvePromise,
142
+ cancelToken,
132
143
  };
133
144
  this._internal.set(taskId, internal);
134
- this._enqueue(taskId, moduleId, inputs, opts?.context ?? null, retry);
145
+ this._enqueue(taskId, moduleId, inputs, opts?.context ?? null, retry, cancelToken);
135
146
  return taskId;
136
147
  }
137
148
  /**
138
149
  * Return the TaskInfo for a task, or null if not found.
139
150
  */
140
- getStatus(taskId) {
141
- const info = this._store.get(taskId);
151
+ async getStatus(taskId) {
152
+ const info = await this._store.get(taskId);
142
153
  return info ? { ...info } : null;
143
154
  }
144
155
  /**
@@ -146,8 +157,8 @@ export class AsyncTaskManager {
146
157
  *
147
158
  * Throws if the task is not found or not in COMPLETED status.
148
159
  */
149
- getResult(taskId) {
150
- const info = this._store.get(taskId);
160
+ async getResult(taskId) {
161
+ const info = await this._store.get(taskId);
151
162
  if (!info) {
152
163
  throw new Error(`Task not found: ${taskId}`);
153
164
  }
@@ -160,9 +171,13 @@ export class AsyncTaskManager {
160
171
  * Cancel a running or pending task.
161
172
  *
162
173
  * Returns true if the task was successfully marked as cancelled.
174
+ *
175
+ * D-18 (v0.22.0): calling `cancel()` aborts the running executor invocation
176
+ * via the CancelToken's underlying AbortSignal — modules performing standard
177
+ * Web-API I/O (`fetch`, `setTimeout`, Web Streams) participate in real abort.
163
178
  */
164
179
  async cancel(taskId) {
165
- const info = this._store.get(taskId);
180
+ const info = await this._store.get(taskId);
166
181
  if (!info)
167
182
  return false;
168
183
  if (info.status !== TaskStatus.PENDING && info.status !== TaskStatus.RUNNING) {
@@ -172,31 +187,33 @@ export class AsyncTaskManager {
172
187
  if (!internal)
173
188
  return false;
174
189
  internal.cancelled = true;
190
+ internal.cancelToken.cancel();
175
191
  info.status = TaskStatus.CANCELLED;
176
192
  info.completedAt = Date.now() / 1000;
177
- this._store.save(info);
193
+ await this._store.save(info);
178
194
  return true;
179
195
  }
180
196
  /**
181
197
  * Return all tasks, optionally filtered by status.
182
198
  */
183
- listTasks(status) {
184
- return this._store.list(status).map(t => ({ ...t }));
199
+ async listTasks(status) {
200
+ const items = await this._store.list(status);
201
+ return items.map(t => ({ ...t }));
185
202
  }
186
203
  /**
187
204
  * Remove terminal-state tasks older than maxAgeSeconds seconds.
188
205
  *
189
206
  * Returns the number of tasks removed.
190
207
  */
191
- cleanup(maxAgeSeconds = 3600) {
208
+ async cleanup(maxAgeSeconds = 3600) {
192
209
  const threshold = Date.now() / 1000 - maxAgeSeconds;
193
210
  let removed = 0;
194
- for (const task of this._store.list()) {
211
+ for (const task of await this._store.list()) {
195
212
  if (!TERMINAL_STATUSES.has(task.status))
196
213
  continue;
197
214
  const refTime = task.completedAt ?? task.submittedAt;
198
215
  if (refTime <= threshold) {
199
- this._store.delete(task.taskId);
216
+ await this._store.delete(task.taskId);
200
217
  this._internal.delete(task.taskId);
201
218
  removed++;
202
219
  }
@@ -208,7 +225,7 @@ export class AsyncTaskManager {
208
225
  */
209
226
  async shutdown() {
210
227
  const promises = [];
211
- for (const task of this._store.list()) {
228
+ for (const task of await this._store.list()) {
212
229
  if (task.status === TaskStatus.PENDING || task.status === TaskStatus.RUNNING) {
213
230
  const internal = this._internal.get(task.taskId);
214
231
  void this.cancel(task.taskId);
@@ -221,6 +238,16 @@ export class AsyncTaskManager {
221
238
  }
222
239
  await Promise.allSettled(promises);
223
240
  }
241
+ /** Count tasks in PENDING or RUNNING state across the store. */
242
+ async _countActiveTasks() {
243
+ let count = 0;
244
+ for (const t of await this._store.list()) {
245
+ if (t.status === TaskStatus.PENDING || t.status === TaskStatus.RUNNING) {
246
+ count++;
247
+ }
248
+ }
249
+ return count;
250
+ }
224
251
  /**
225
252
  * Start a background reaper that periodically deletes expired terminal tasks.
226
253
  *
@@ -236,20 +263,25 @@ export class AsyncTaskManager {
236
263
  let timeoutHandle = null;
237
264
  let resolveStop;
238
265
  const stopPromise = new Promise((resolve) => { resolveStop = resolve; });
239
- const sweep = () => {
266
+ const sweep = async () => {
240
267
  if (stopped)
241
268
  return;
242
269
  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);
270
+ try {
271
+ const expired = await this._store.listExpired(threshold);
272
+ for (const task of expired) {
273
+ await this._store.delete(task.taskId);
274
+ this._internal.delete(task.taskId);
275
+ }
276
+ }
277
+ catch (err) {
278
+ console.warn('[apcore:async-task] Reaper sweep failed:', err);
247
279
  }
248
280
  if (!stopped) {
249
- timeoutHandle = setTimeout(sweep, sweepIntervalMs);
281
+ timeoutHandle = setTimeout(() => { void sweep(); }, sweepIntervalMs);
250
282
  }
251
283
  };
252
- timeoutHandle = setTimeout(sweep, sweepIntervalMs);
284
+ timeoutHandle = setTimeout(() => { void sweep(); }, sweepIntervalMs);
253
285
  const handle = {
254
286
  stop: async () => {
255
287
  stopped = true;
@@ -284,11 +316,16 @@ export class AsyncTaskManager {
284
316
  next();
285
317
  }
286
318
  }
287
- _enqueue(taskId, moduleId, inputs, context, retry) {
319
+ _enqueue(taskId, moduleId, inputs, context, retry, cancelToken) {
288
320
  const run = async () => {
289
321
  const internal = this._internal.get(taskId);
290
322
  if (!internal)
291
323
  return;
324
+ // Per-task Context augmented with the task's cancel token so the
325
+ // executor sees real cancellation (D-18). When the caller already
326
+ // supplied a Context we shallow-clone it to attach the token without
327
+ // mutating the caller's instance.
328
+ const taskContext = await this._buildTaskContext(context, cancelToken);
292
329
  // slotHeld tracks whether we currently hold a concurrency slot.
293
330
  // We release it during backoff waits so other tasks can run.
294
331
  let slotHeld = false;
@@ -299,21 +336,26 @@ export class AsyncTaskManager {
299
336
  slotHeld = true;
300
337
  if (internal.cancelled)
301
338
  return;
302
- const info = this._store.get(taskId);
339
+ const info = await this._store.get(taskId);
303
340
  if (!info)
304
341
  return;
305
342
  info.status = TaskStatus.RUNNING;
306
- info.startedAt = Date.now() / 1000;
307
- this._store.save(info);
343
+ // A-D-AT-08: preserve startedAt across retries (set only on first
344
+ // attempt). Mirrors Python + Rust semantics — `startedAt` reflects
345
+ // when the task first started running, not the latest attempt.
346
+ if (info.startedAt === null) {
347
+ info.startedAt = Date.now() / 1000;
348
+ }
349
+ await this._store.save(info);
308
350
  let execError = null;
309
351
  let succeeded = false;
310
352
  try {
311
- const result = await this._executor.call(moduleId, inputs, context);
353
+ const result = await this._executor.call(moduleId, inputs, taskContext);
312
354
  if (!internal.cancelled) {
313
355
  info.status = TaskStatus.COMPLETED;
314
356
  info.completedAt = Date.now() / 1000;
315
357
  info.result = result;
316
- this._store.save(info);
358
+ await this._store.save(info);
317
359
  succeeded = true;
318
360
  }
319
361
  }
@@ -328,10 +370,16 @@ export class AsyncTaskManager {
328
370
  const delay = retry.computeDelayMs(info.retryCount);
329
371
  info.retryCount += 1;
330
372
  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));
373
+ // Intentionally do NOT reset startedAt / completedAt (A-D-AT-08):
374
+ // startedAt reflects first-run timestamp; completedAt remains null
375
+ // because the task has not yet terminated.
376
+ await this._store.save(info);
377
+ // A-D-004 (apcore v0.22.0): race the backoff wait against the
378
+ // task's cancel signal so a cancel() issued mid-backoff unwinds
379
+ // immediately instead of waiting out the full delay (up to
380
+ // maxRetryDelayMs). Mirrors Python/Rust cancellable-sleep
381
+ // semantics during retry backoff.
382
+ await this._sleepUntilCancelled(delay, cancelToken);
335
383
  if (internal.cancelled)
336
384
  return;
337
385
  // Loop continues: re-acquire slot and retry
@@ -340,7 +388,7 @@ export class AsyncTaskManager {
340
388
  info.status = TaskStatus.FAILED;
341
389
  info.completedAt = Date.now() / 1000;
342
390
  info.error = execError instanceof Error ? execError.message : String(execError);
343
- this._store.save(info);
391
+ await this._store.save(info);
344
392
  return;
345
393
  }
346
394
  }
@@ -355,5 +403,52 @@ export class AsyncTaskManager {
355
403
  console.warn('[apcore:async-task] Unexpected error in task runner:', err);
356
404
  });
357
405
  }
406
+ /**
407
+ * Sleep for `delayMs`, resolving early if `cancelToken` is aborted (A-D-004).
408
+ *
409
+ * The timer is cleared and the abort listener detached on whichever path
410
+ * resolves first, so neither leaks. A cancel issued mid-backoff resolves
411
+ * promptly rather than waiting out the full retry delay.
412
+ */
413
+ _sleepUntilCancelled(delayMs, cancelToken) {
414
+ if (cancelToken.signal.aborted) {
415
+ return Promise.resolve();
416
+ }
417
+ return new Promise((resolve) => {
418
+ const signal = cancelToken.signal;
419
+ const timer = setTimeout(() => {
420
+ signal.removeEventListener('abort', onAbort);
421
+ resolve();
422
+ }, delayMs);
423
+ const onAbort = () => {
424
+ clearTimeout(timer);
425
+ signal.removeEventListener('abort', onAbort);
426
+ resolve();
427
+ };
428
+ signal.addEventListener('abort', onAbort, { once: true });
429
+ });
430
+ }
431
+ /**
432
+ * Build the Context to hand to `executor.call()` for a task attempt.
433
+ *
434
+ * If the caller supplied a Context we shallow-clone it with the task's
435
+ * CancelToken attached; if no Context was supplied we create a fresh one
436
+ * via the public `Context.create()` factory with the token already bound
437
+ * (per Issue #66, `cancelToken` is now a first-class create() parameter).
438
+ * Either way the executor sees a Context whose `cancelToken` is the same
439
+ * instance that `AsyncTaskManager.cancel()` aborts (D-18).
440
+ */
441
+ async _buildTaskContext(callerContext, cancelToken) {
442
+ // Lazy import to avoid a static circular dep between async-task and context.
443
+ const { Context: CtxClass } = await import('./context.js');
444
+ if (callerContext === null) {
445
+ // Executor binding is deferred to the first executor.call() — Issue #66
446
+ // removes `executor` from Context.create()'s public surface.
447
+ return CtxClass.create(undefined, undefined, cancelToken);
448
+ }
449
+ // Shallow clone (preserve identity/data/etc.) and overwrite cancelToken.
450
+ const cloned = new CtxClass(callerContext.traceId, callerContext.callerId, [...callerContext.callChain], callerContext.executor, callerContext.identity, callerContext.redactedInputs, callerContext.data, cancelToken, callerContext.services, callerContext.globalDeadline);
451
+ return cloned;
452
+ }
358
453
  }
359
454
  //# sourceMappingURL=async-task.js.map
@@ -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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"}